node.js - promise 中的 if-else 流程( Bluebird )

标签 node.js promise bluebird

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

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 但我正在寻找一个非阻塞的解决方案。

最佳答案

我想你正在寻找

(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();
});

关于node.js - promise 中的 if-else 流程( Bluebird ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26599798/

相关文章:

javascript - https.request 忽略 rejectUnauthorized

javascript - ES6 promise : how to chain functions with arguments

javascript - 如何将时间字符串(例如 "8:02 AM")转换为可排序字段

javascript - 如何使用快速响应保持在同一页面而不重定向?

javascript - 通过 javascript 访问 Handlebars 变量

javascript - 如何使用来自 async.js 的 Promise 进行编码?

javascript - HTMLImageElemen.src 在哪里处理 HTMLImageElemen?

javascript - Bluebird promise 过滤器。为什么是数组?

javascript - 如何使用 Request 库和 Bluebird 发送 post 请求?

javascript - 与 fs 和 bluebird 的 promise