举个例子:
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
Run Code Online (Sandbox Code Playgroud)
这甚至可能吗?
我可以看到的替代方案是要么总是调用异步函数,抛出'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
});
Run Code Online (Sandbox Code Playgroud)
Q.when() 当你不知道某个值是否是一个承诺时,可以用于这个.
Q.when(foo || async_call()).then(function (foo) {
//...
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3944 次 |
| 最近记录: |