Синхронный цикл
У меня есть массив объектов. Для каждого объекта мне нужно вызвать асинхронную функцию, дождаться ее выполнения, а потом перейти к следующей итерации.
Делаю по мотивам этого ответа через async/await
async function process(data) {
.........
await asyncFunc({
data: data,
onfinished: function() {
console.log("Finished");
}
});
}
async function loop() {
const data = [1, 2, 3];
for (let i = 0; i < data.length; i++) {
......
console.log(data[i])
await process(data[i]);
}
}
И вижу в консоли
1
2
3
Finished
Finished
Finished
Чего не хватает для счастья?
Функция asyncFunc посылает аякс-запрос. Но она моя и изменить ее я не могу
Ответы (1 шт):
Автор решения: vsemozhebuty
→ Ссылка
Как-то так?
function process(data) {
// .........
return new Promise((resolve) => {
asyncFunc({
data: data,
onfinished: resolve,
});
});
}
async function loop() {
const data = [1, 2, 3];
for (const item of data) {
// ......
console.log(item)
await process(item);
console.log("Finished");
}
}