Sho*_*oyo 3 javascript promise chain q
我是这个承诺世界的新手,我遇到了一个我不知道该怎么办的情况.
我有一个新的承诺被第一个承诺的结果称为.
情况如下:
function asyncCall(object){
return firstObject.loadSomething(object).then(function(result) {
result.innerAsyncCall().then(function() {
finalCode();
});
});
}
Run Code Online (Sandbox Code Playgroud)
我遍历asyncCall并构建一个$ q.all().then()等待promises解析.
但是,由于内部承诺没有链接,它独立运行.
示例代码:
var promises = [];
array.forEach(function(object){
promises.push(asyncCall(object));
});
$q.all(promises).then(function(){
console.log('Done!!');
});
Run Code Online (Sandbox Code Playgroud)
问题是.我可以做些什么来等待内部承诺的全面执行?
如果你使用promise来解决一个promise,它会"递归地"采用它的状态并等待最里面的一个.在.then()调用的情况下,新的promise将使用回调的返回值来解决- 所以你只需要return在代码中添加一个它就可以了:
function asyncCall(object) {
return firstObject.loadSomething(object).then(function(result) {
return result.innerAsyncCall().then(function() {
// ^^^^^^
finalCode();
});
});
}
Run Code Online (Sandbox Code Playgroud)
请注意,您也可以将其展平为一个链:
function asyncCall(object) {
return firstObject.loadSomething(object).then(function(result) {
return result.innerAsyncCall();
}).then(finalCode);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1686 次 |
| 最近记录: |