@Tom_Xor

Правильно ли я исправил код?

Прежний код
async function getUsers(names) { // *
  let jobs = [];

  for(let name of names) {
    let job = fetch(`https://api.github.com/users/${name}`).then(
      successResponse => {
        if (successResponse.status != 200) {
          return null;
        } else {
          return successResponse.json();
        }
      },
      failResponse => { // **
        return null;
      }
    );
    jobs.push(job);
  }

  let results = await Promise.all(jobs); // ***

  return results;
}

Исправления:
* Ключевое слово async после исправления *** излишне.
** Аргумент failResponse излишен, так как не используется, также следует вынести ошибку в отдельный catch, чтобы
перехватывать ошибки возникшие response.json().
*** Переменная result излишня, также излишне ключевое слово await.

Верны ли исправления?
Исправленный код
function getUsers (userNames) {
    let requests = userNames.map(userName =>
        fetch(`https://api.github.com/users/${userName}`)
             .then(successResponse => successResponse.status === 200 ? successResponse.json() : null)
             .catch(() => null));
    return Promise.all(requests);
}
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
Aetae
@Aetae
Тлен
Ну и переменную requests можно выкинуть, раз избавляешься от лишнего.
А так: исправления к лучшему, логика изменилась только в одном месте: в первом случае если вдруг придёт невалидный json с кодом 200 - всё упадёт, во втором - просто вернёт null(что правильнее, как по мне).
Единственное что, если предполагается что в userNames может оказаться больше чем десяток записей - лучше их запросы разбить, в зависимости от возможностей сервера и канала.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽