Задать вопрос
  • Как заполнить массив в node.js?

    @Interface
    Судя по всему у вас смешаны промисы и библиотека async https://www.npmjs.com/package/async .
    Согласен с shmatuan, что лучше всего было бы использвовать async/await. Если это невозможно советую переписать на что-то одно, либо callback'и, либо Promis'ы (лучше второе конечно).

    Судя по коду проблема в том что колбэк в котором пополняется массив ассинхронный. Это значит что из внешней функции мы выйдем до его исполнения. А значит слудующий колбэк в async.series выполнится с пустым массивом.

    Иван Жильников Вот это один из вариантов решения проблемы:
    https://jsfiddle.net/int0h/17bojhfm/

    То есть использование Promise.all

    В конце есть решение на async / await, оно делает примерно то же что и ваше, но читается намного лучше и занимает 10 строк, а не 30. Спойлер, вот оно:
    async function main() {
        const scales = await DB.GetAllScales();
        const result = await Promise.all(
            scales.map(async scale => ({
                TypeScales: await DB.GetTypeScales(scale.Name),
                NameScales: scale.Name
            }))
        );
      console.log('async / await result:', result);
    }
    Ответ написан
    Комментировать