Javascript 推动一个空洞的承诺,然后重新分配
因为有一个条件,我需要先获取值,然后返回一个承诺,所以我创建了一个空的承诺并重新分配它。然而,这是行不通的,我的意思是承诺。一切都不会返回结果。我做错了什么?你的Javascript 推动一个空洞的承诺,然后重新分配,javascript,promise,Javascript,Promise,因为有一个条件,我需要先获取值,然后返回一个承诺,所以我创建了一个空的承诺并重新分配它。然而,这是行不通的,我的意思是承诺。一切都不会返回结果。我做错了什么?你的承诺永远不会兑现。在Promise.all调用后,在数组中重新分配值不会改变任何内容。相反,您应该使用链接来分配一个承诺,该承诺同时执行这两个操作,等待另一个值,然后等待您的值 var promises = [] array.forEach(element, i => { promises[i] = functionTh
承诺永远不会兑现。在Promise.all调用后,在数组中重新分配值不会改变任何内容。相反,您应该使用链接来分配一个承诺,该承诺同时执行这两个操作,等待另一个值,然后等待您的值
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);
});
或者更简单:
array.forEach(element, i => {
if(!somecondition)
promises[i] = functionThatReturnsAPromise(element);
else {
promises[i] = waitForSomeValue.then(function(result){
return functionThatReturnsAPromise(result);
});
}
});
基于您提供的代码
promises = element.map(el => {
if(!somecondition)
return functionThatReturnsAPromise(el);
return waitForSomeValue.then(functionThatReturnsAPromise);
});
不清楚您如何等待somevalue
。无论您等待什么,都将在循环完成并调用promise all之后发生。它只是array.forEach(元素,i=>{promises[i]=someCondition?waitForSomeValue.then(FunctionthatReturnsPromise):FunctionthatReturnsPromise(元素);})
因为重新分配承诺
可能发生在承诺之后。所有(承诺)
,您已经等待了一个永远无法解决的承诺,所以为时已晚
const promises = array.map(element => someCondition
? waitForSomeValue.then(functionThatReturnsAPromise)
: functionThatReturnsAPromise(element);
);