Array.filter с функцией async не работает

Вот мой код ниже. Я работаю над массивом contentList длины 8, который отфильтровывает все элементы, которые не работают с axios.get.

Он должен был создать массив длиной 5, но оказался длиной 8. И result пустой, как и все async await не работает.

Что не так с моим кодом? Любая помощь будет оценена по достоинству.

static async getInitialProps () {
  let result = {}

  const promises = contentList.filter(async ({hotList, newList, hotUrl, newUrl}) => {
    let hotRes, newRes
    try {
      hotRes = await axios.get(hotUrl)
      newRes = await axios.get(newUrl)
    } catch (e) {
      return false
    }

    // if (hotRes.data.code === 200) {
    result[hotList] = hotRes.data.data
    // }

    // if (newRes.data.code === 200) {
    result[newList] = newRes.data.data
    // }

    return true
  })

  const categoryList = await Promise.all(promises)

  console.info('categoryList', promises.length)

  return {
    categoryList,
    ...result,
  }
}

откуда вы взяли идею, что ввод асинхронной функции, обещающей возвращающую функцию в filter, которая требует функции, возвращающей логическое значение, было хорошей идеей?

ASDFGerte 22.05.2018 14:47

Вы не можете использовать функцию async в качестве параметра для фильтра. Если вы пытаетесь заставить его работать асинхронно, просто поместите фильтр в асинхронную функцию

TheCrzyMan 22.05.2018 14:49

Я увидел это решение и проделал точно так же, но получил неверный результат

Hao Gu 22.05.2018 14:59
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
273
0

Другие вопросы по теме