Работа с API может оказаться непростой задачей, если вы позволите ей это сделать. Используя проект, который я завершил, я помогу описать и проанализировать методы, связанные с созданием ваших собственных проектов с использованием API. Давайте погрузимся!
Приведенную выше функцию я использовал для создания нескольких запросов на выборку для Pokémon API. Первый устанавливает пустой массив, в котором мы будем хранить наши данные. Внутри цикла for (я использовал 50 в качестве счетчика, потому что хотел 50 карточек) есть константа, объявленная с URL-адресом, который динамически вводит число на основе итерации, на которой находится цикл for. В PokéAPI есть ссылка, соответствующая каждому покемону, поэтому каждый раз, когда он зацикливается, создается уникальная ссылка, а затем извлекаются данные из API. В строке 200 мы видим, что пустой массив вызывается методом push. Внутри метода push мы отправляем полученный URL-адрес (описанный выше) .then()
, беря необработанные данные и преобразовывая их в .json().
.
Используя метод Promise.all()
, мы можем взять наш массив промисов и одновременно запустить следующий код. При работе с любым fetch()
важно помнить, что он не синхронный. Это означает, что для наших 50 запросов на выборку они не будут выполняться по порядку или даже в одно и то же время каждый раз. Работая с несколькими API, вы, скорее всего, получите более широкий диапазон времени для выполнения каждого промиса. Promise.all()
исправляет это, позволяя нам дождаться разрешения всех промисов в нашем массиве, прежде чем запускать следующий код.
Используя метод .then()
, поставляемый с API выборки, мы можем запустить что-то вроде мини-функции. Со строк 204 по 209 мы сопоставляем каждое из разрешенных промисов и сохраняем нужные данные в отдельные объекты.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**(Обратите внимание, что пары ключ-значение Type:
и Abilities
также используют метод сопоставления для извлечения каждого соответствующего элемента из данных и сохранения его в виде списка, разделенного запятыми, если применимо)**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
В строке 210 мы используем метод «остальные», чтобы поместить все наши данные в новый массив. pokeArray = [...pokemon];
Строки 211 и 212 относятся к моему случаю использования данных, которые я сохранил. Каждый запускает последующую функцию для дальнейшей обработки данных, полученных из API.
Последняя строка, на которую стоит обратить внимание, это строка 214. Каждый раз, когда вы создаете fetch()
, вы захотите использовать метод .catch()
для обработки любых ошибок. Любой браузер будет иметь свой собственный обработчик ошибок по умолчанию, но последнее, что вам нужно, когда вы кодируете свой проект, — это получить общее сообщение об ошибке без какой-либо специфики. Хотя в этом примере это, по сути, то, что я сделал. Он «поймет» ошибку и создаст журнал консоли: "Fetch failed: {some error message/type}
.
Я надеюсь, что это поможет вам в вашем путешествии по программированию и, как всегда, удачного кодирования =)