#javascript
#javascript
Вопрос:
У меня есть массив городов. Довольно большой массив. Для каждого города в массиве мне нужно сделать 2 запроса к моему серверу — 1 запрос, чтобы получить текущую погоду для города, и еще 1, чтобы получить сегодняшние новости. Для каждого из этих 2 запросов существует специальная конечная точка API. Как мне правильно получить всю необходимую информацию? Я имею в виду:
- не делайте слишком много запросов в секунду
- конечный результат должен хранить информацию в том же порядке, в котором города хранятся в массиве
- если некоторые запросы завершились ошибкой, не прекращайте запрашивать другие города (не так, как в Promise.all)
Ответ №1:
Вы можете использовать Promise.allSettled()
, а затем использовать тайм-аут для ожидания определенного периода времени и повторить то же самое. Обязательно используйте также тайм-аут запроса (поэтому, когда сервер не отвечает в течение длительного времени, вы можете прервать выполнение).
Вот пример:
const myFunc = async () => {
await Promise.allSettled([ ... ]);
setTimeout(myFunc, 1000);
};