if-else流入承诺这是我的代码的简短版本。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但我正在寻找一个非阻塞的解决方案。
3 回答
隔江千里
TA贡献1906条经验 获得超10个赞
我想你在找
(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();
});
波斯汪
TA贡献1811条经验 获得超4个赞
您总是可以使用Promise.all()
条件函数
var condition = ...;var maybeWrite = function(condition, file, jsonData){ return (condition) ? fs.writeFileAsync(file, jsonData) : Promise.resolve(true);}Promise.all([maybeWrite(condition, file, jsonData),functionA()]).then(function(){ // here 'functionA' was called, 'writeFileAsync' was maybe called})
或者,如果您只想functionA
在文件写入之后调用,则可以分开:
maybeWrite(condition, file, jsonData).then(function(){ // here file may have been written, you can call 'functionA' return functionA();})
- 3 回答
- 0 关注
- 600 浏览
添加回答
举报
0/150
提交
取消