3zz*_*zzy 0 javascript promise
var promises = []
array.forEach(element, i => {
promises[i] = functionThatReturnsAPromise(element);
if (somecondition) {
promises[i] = new Promise(function(){}); // empty initial promise
waitForSomeValue.then(function(result){
promises[i] = functionThatReturnsAPromise(result); // reassign promise
});
}
});
Promise.all(promises)
.then(function(result){
console.log(result);
});
Run Code Online (Sandbox Code Playgroud)
由于在某种情况下,我需要先获取值然后返回承诺,所以我要创建一个空的承诺并重新分配它。但是,这是行不通的,也就是说Promise.all永远不会返回结果。我究竟做错了什么?
您的empty承诺永远无法实现。在Promise.all调用之后,在数组中重新分配值不会发生任何变化。相反,您应该使用链接来分配一个承诺,该承诺同时执行两个承诺,等待另一个值,然后等待您的值。
array.forEach(element, i => {
if(!somecondition)
promises[i] = functionThatReturnsAPromise(element);
else {
promises[i] = waitForSomeValue.then(function(result){
return functionThatReturnsAPromise(result);
});
}
});
Run Code Online (Sandbox Code Playgroud)
甚至更简单:
promises = element.map(el => {
if(!somecondition)
return functionThatReturnsAPromise(el);
return waitForSomeValue.then(functionThatReturnsAPromise);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36 次 |
| 最近记录: |