一尘不染

if-else中的诺言(蓝鸟)

node.js

这是我的代码的简短版本。

var Promise = require('bluebird');
var fs = Promise.promisifyAll(require("fs"));

if (conditionA) {
  fs.writeFileAsync(file, jsonData).then(function() {
    return functionA();
  });
} else {
  functionA();
}

这两个条件都调用functionA。有办法避免其他情况吗?我可以,fs.writeFileSync但是我正在寻找一种非阻塞的解决方案。


阅读 284

收藏
2020-07-07

共1个答案

一尘不染

我想你在找

(conditionA 
  ? fs.writeFileAsync(file, jsonData)
  : Promise.resolve())
.then(functionA);

这是短的

var waitFor;
if (conditionA)
    waitFor = fs.writeFileAsync(file, jsonData);
else
    waitFor = Promise.resolve(undefined); // wait for nothing,
                                          // create fulfilled promise
waitFor.then(function() {
    return functionA();
});
2020-07-07