Ваше empty
обещание никогда не разрешается.Переназначение значения в массиве ничего не меняет после вызова Promise.all
.Вместо этого вы должны использовать цепочку, чтобы назначить обещание, которое выполняет и то, и другое, ждет другое значение, а затем ожидает ваше значение.
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);
});