我有一个简单的 if else 场景,如果设置了变量,我需要做一些事情,否则只需在 else 部分执行:
if(flag) {
doSomething();
}
doNextThing(someParam);
如果设置了标志,那么我必须 doSomething() 和 doNextThing()
doSomething 和 doNextThing 都返回承诺。实现这一点的最佳方法是什么?
目前我的代码如下所示:
if(flag) {
doSomething().then(doNextThing);
}
else doNextThing(someParam);
在更干净的代码段中优雅地结合两者的最佳方法是什么?
我试过了:
var somePromise = new Promise(function(resolve, reject){
if(flag)
doSomething.then(resolve(result));
else resolve();
})
return somePromise.then(doNextThing(resolvedValue))
但这不起作用。似乎承诺 doSomething 永远不会解决,代码会立即返回。我还尝试了上述几种变体,包括:
var somePromise = new Promise(function(resolve, reject){
if(flag)
doSomething.then(resolve);
else resolve();
})
和:
var somePromise = new Promise(function(resolve, reject){
if(flag)
doSomething.then(function(result){
resolve(result);
}.bind(this));
else resolve();
}.bind(this));
但除了第一个选项外,没有任何效果。所以,我的问题是 - 有没有更好/优雅的方法来实现这一目标?