Я использую node и axios (с TS, но это не так важно) для запроса API.У меня есть набор сценариев, которые делают вызовы к различным конечным точкам и регистрируют данные (иногда их фильтруют). Эти сценарии используются для целей отладки.Я пытаюсь сделать эти сценарии «лучше», добавив задержку между запросами, чтобы я не «взорвал» API, особенно когда у меня большой массив, который я пытаюсь передать.Поэтому в основном я хочу сделать запрос GET и сделать паузу на определенное время, прежде чем делать следующий запрос.
Я играл с функциями setTimeout()
, но я помещаю их только там, гдеони добавляют задержку после выполнения запросов;везде, где я вставил функцию, этот результат был.Я понимаю, почему я получаю этот результат, мне просто нужно было сделать все возможное, чтобы хотя бы улучшить свое понимание того, как все работает.
Хотя у меня есть попытка настроить очередь или использовать перехватчики, но я думаю, что я могу «отклониться» от более простого решения с этими идеями.
Кроме того, у меня естьдругой «базовый сценарий», который я написал на лету (вроде точки рождения для этой серии сценариев), который я создал с помощью цикла for
вместо функций map()
и promise.all
.Я также пытался установить задержку в этом скрипте, но мне ничего не помогло.
var axios = require('axios');
var fs = require('fs');
const Ids = [arrayOfIds];
try {
// Promise All takes an array of promises
Promise.all(Ids.map(id => {
// Return each request as its individual promise
return axios
.get(URL + 'endPoint/' + id, config)
}))
.then((vals) =>{
// Vals is the array of data from the resolved promise all
fs.appendFileSync(`${__dirname}/*responseOutput.txt`,
vals.map((v) => {
return `${JSON.stringify(v.data)} \n \r`
}).toString())
}).catch((e) => console.log)
} catch (err) {
console.log(err);
}
Нет ошибок с приведенным выше кодом;просто не могу понять, как правильно выставить задержку.