举个例子:
if(foo) {
async_call(); // returns a Q promise object
}
// do this immediately if foo was false
// or after the promise is resolved if foo was true
这甚至可能吗?
我可以看到的替代方案要么总是调用 async 函数,而放弃“foo”检查,这不是最优的,但可以在代码中工作;或者只是假设 'foo' 为真,如果为假则抛出错误(要求调用者在调用异步函数本身后重试),由于显而易见的原因,这甚至更不理想。
编辑:作为临时解决方法,我发现这很有效,但这并不理想:
var promise = foo ? Q.defer().resolve(foo).promise : async_call();
promise.then(function(foo) {
// this is done after the async call if it was necessary or immediately if not
});