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

Как правильно составить такую цепочку запросов?

Есть большой массив гео-меток, около 800 штук. Для каждой из меток в массиве мне нужно:
  1. Сделать запрос на what-the-city.com чтобы узнать, какой город расположен вблизи данной гео-метки.
  2. Как только получили название города, нужно:
    1. Сделать запрос на tell-me-weather.com чтобы получить погоду в этом городе
    2. Сделать запрос на what-the-country.com чтобы узнать, в какой стране находится этот город
      1. Сделать запрос на currency-by-country.com чтобы узнать валюту страны, где находится город



На самом деле не важно куда именно и за какой информацией нужно обращаться, важна последовательность запросов.
Есть несколько требований:
  • Пользователь должен получить данные именно в той последовательности, в которой гео-метки находятся в массиве.
  • Ответ должен быть получен как можно быстрее. Как я понимаю, просто пробегаться по элементам массива по очереди будет неэффективно. Эффективнее будет что-то типа Promise.all, но он прервется если один из запросов будет отклонен. А нужно чтобы были выполнены все запросы. А при неудачной попытке дать пользователю дефолтные данные вместо тех, которые не удалось получить.
  • Сделать что-то, чтобы не превышать количество запросов на эндпоинтах. Но как? Вручную устанавливать таймаут?


Я не прошу код (хотя можно и в коде :) ), а просто хочу понять как это все правильно организовать по шагам в соответствие с требованиями выше. Спасибо.
  • Вопрос задан
  • 128 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
Эффективнее будет что-то типа Promise.all, но он прервется если один из запросов будет отклонен

Promise.allSettled
Пользователь должен получить данные именно в той последовательности, в которой гео-метки находятся в массиве.

Тогда только цикл, ибо Promise.allSettled и т.п. не гарантируют порядок выполнения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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