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條經(jīng)驗 獲得超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條經(jīng)驗 獲得超4個贊
您總是可以使用Promise.all()
條件函數(shù)
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
在文件寫入之后調(diào)用,則可以分開:
maybeWrite(condition, file, jsonData).then(function(){ // here file may have been written, you can call 'functionA' return functionA();})
- 3 回答
- 0 關(guān)注
- 635 瀏覽
添加回答
舉報
0/150
提交
取消