Да, отредактировано для уточнения
от вопрос уже есть ответ здесь:
Использование async / await с циклом forEach 13 ответовС помощьюawait
вfor
цикл внутриasync
Функция обеспечивает ожидаемый результат выполнения в ожидании завершения текущегоPromise
в течение итерации
const story = [1,2,3,4,5];
(async() => {
for (var i = 0; i < story.length; i++) {
await new Promise(function(resolve) {
setTimeout(function() {
resolve(story[i])
}, 1000)
}).then(function(chapter) {
document.body
.appendChild(document.createTextNode(chapter));
});
}
})()
ПочемуArray.prototype.forEach()
не обеспечивают такую же функциональность в ожидании выполнения текущегоPromise
когдаawait
использует внутри обратного вызова, переданного.forEach()
?
const story = [1,2,3,4,5];
(async() => {
story.forEach(async function(chapterUrl) {
// does not await for Promise fulfillment
await new Promise(function(resolve) {
setTimeout(function() {
resolve(chapterUrl)
}, 1000)
}).then(function(chapter) {
document.body
.appendChild(document.createTextNode(chapter));
});
});
})();