@mirikkingg

Как экспортировать ответ асинхронной функции?

Чет не получается получить return функции, что не так?
И как экспортировать ответ в Node?
const songsObject = async () => {
  let songsObjectArray = [];
  for (let i = 0; i < names.length; i++) {
    try {
      const metadata = await mm.parseFile(`${__dirname}\\${names[i]}`);
        let picture = metadata.common.picture[0];
        let encodedPicture = `data:${picture.format};base64,${picture.data.toString('base64')}`;
        let trackDuration = metadata.format.duration;
        let trackTitle = metadata.common.title;
        let trackArtist = metadata.common.artist;
        let id = Date.now();
          let trackObj = { id, trackTitle, trackArtist, trackDuration, encodedPicture }
          return songsObjectArray.push(trackObj);
    } catch (error) {
        console.error(error.message);
    }
  }
}

const songsArray = songsObject().then((result) => {console.log(result);}); // 1 ?
module.exports = songsArray
  • Вопрос задан
  • 119 просмотров
Решения вопроса 2
ProgrammerForever
@ProgrammerForever
Учитель, автоэлектрик, программист, музыкант
return songsObjectArray.push(trackObj);
исправьте на
songsObjectArray.push(trackObj);
return songsObjectArray;


Array.push() возвращает новую длину массива, а не сам массив
Ответ написан
@mirikkingg Автор вопроса
Я возвращал пуш, и не правильно экспортировал.

const getSongsObject = async () => {
  for (let i = 0; i < names.length; i++) {
    try {
      const metadata = await mm.parseFile(`${__dirname}\\${names[i]}`);
        let picture = metadata.common.picture[0];
        let encodedPicture = `data:${picture.format};base64,${picture.data.toString('base64')}`;
        let trackDuration = metadata.format.duration;
        let trackTitle = metadata.common.title;
        let trackArtist = metadata.common.artist;
        let id = Date.now();
          let trackObj = { id, trackTitle, trackArtist, trackDuration, encodedPicture }
          songsObjectArray.push(trackObj);
    } catch (error) {
        console.error(error.message);
    }
  } return songsObjectArray;
}

module.exports = {
  getSongsObject
}


// main

const dp = require('../music/dataParser')

dp.getSongsObject().then((result) => {console.log(result)})
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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