node.js - отправка в массив из асин c функции - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь собрать sh некоторые объекты в массив 'found_songs' из асинхронной функции. Есть ли правильный способ сделать это? Спасибо!

app.post('/api/spotify/get-songs', async function (req, res) {
    let selected_songs = req.body;
    let found_songs = [];

    selected_songs.forEach(async function (song) {

        let temp = await getSong(song);
        found_songs.push(temp);

    });

});

1 Ответ

3 голосов
/ 21 апреля 2020

Родительская функция уже асинхронна, поэтому вы можете использовать для l oop:

app.post('/api/spotify/get-songs', async function (req, res) {
  let selected_songs = req.body;
  let found_songs = [];
  for (let song of selected_songs) {
    let temp = await getSong(song)
    found_songs.push(temp)
  }
});

Вы также можете использовать Promise.all () для повышения производительности. Таким образом, он не ждет на каждой итерации.

const selected_songs = req.body;
const found_songs = await Promise.all(selected_songs.map(song => getSong(song))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...