Оправить ajax запрос на сервер в цикле

Как правильно остановить цикл и дождаться ответа от сервера?

Есть массив

const arr = [1, 2, 3];

Проходясь по нему в цикле

for(let i = 0;  i < arr.length; i++){
    ajaxFunction();
}

Как дождаться ответа перед повторным выполнением фукции?


Ответы (2 шт):

Автор решения: Алексей Бабыкин

Вы можете сделать свою функцию асинхронной добавив async/await. И затем вызвать её с например в самовызывающейся функции.

let ajaxFunction = async () => { await fetch('google.com').then(res => console.log(res))}

const arr = [1, 2, 3];

(async () =>{
for(let i = 0;  i < arr.length; i++){
    console.log('new');
    await ajaxFunction();
}
})();
→ Ссылка
Автор решения: doox911

Вариант 1:

const f = () => new Promise(resolve => setTimeout(() => resolve('Tik'), 1000));


const af = [
  f,
  f,
  f,
];

async function start() {
  for (const item of af) {
    const r = await item();
    console.log(r);
  }
}

start();

Вариант 2:

const f = () => new Promise(resolve => setTimeout(() => resolve('Tik'), 3000));


const af = [
  f(),
  f(),
  f(),
];

Promise.all(af).then(() => console.log('Finished'));

→ Ссылка