Задать вопрос
@AlexandrMa

Как сделать паузу после запроса?

Данный код, создает несколько запросов строго по определенному интервалу времени.
Часто бывает, что запрос выполняется долго.
Как переписать код, чтобы он выполнял следующий запрос, через секунду, после предыдущего?

let tasks = [];
const pause  = 1000;

for (let i = 0; i < id.length; i++) {

  let dataPost = { "id": id[i] }

  const delay = pause * i;

  tasks.push(new Promise(async (resolve) => {

    await new Promise(res => setTimeout(res, delay));

    let result = await axios.post("https://url_api_rest", dataPost)
      .then((res) => {
        return {
            "postData": dataPost,
            "result": res.data,
          };
      }).catch((err) => {
        console.log(err);
        return err;
      });

    resolve(result);
  }));
}
  • Вопрос задан
  • 74 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
victormayorov
@victormayorov
Frontend разработчик
Попробуйте так.
const tasks = [{ path: 'http://domain.com/api/1', data: {} }, { path: 'http://domain.com/api/2', data: {} }, { path: 'http://domain.com/api/3', data: {} }];
const delay = () => new Promise(resolve => setTimeout(resolve, 1000));
const createRequest = async (path, data) => {
    await delay();
    return axios.post(path, data)
            .then((response) => ({ postData: data, result: response?.data }))
            .catch((err) => {
                console.log(err);
                return err;
            });
}
const processTasks = async (array) => {
    for (const item of array) {
        const result = await createRequest(item?.path, item?.data);
        console.log('result:', result);
      }
}
processTasks(tasks);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы