条件3のreturn Promise.resolve()
はあっても無くても実行結果は変わらない。
function asyncFunc(msg, callback) {
setTimeout(function() {
console.log(msg);
callback();
}, 0);
}
var condition1 = false;
var condition2 = false;
Promise.resolve()
.then(function(){
if(condition1){
// 条件1 単独のPromise
return new Promise(function(fulfilled, rejected){
asyncFunc('1', fulfilled);
})
}else if(condition2){
// 条件2 Promise2つを直列化
return Promise.resolve()
.then(function(){
return new Promise(function(fulfilled, rejected){
asyncFunc('2-1', fulfilled);
})
})
.then(function(){
return new Promise(function(fulfilled, rejected){
asyncFunc('2-2', fulfilled);
})
})
}else{
// 条件3 何もしない
console.log('3');
// return Promise.resolve(); これは不要
}
})
.then(function(){
return new Promise(function(fulfilled, rejected){
asyncFunc('4', fulfilled);
})
});
実行結果
3
4