Цикл вложенной карты async / await против вложенной петли async / await - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть вложенный цикл map с асинхронным ожиданием, где я делаю 2 promise.all операторы. Данные отформатированы в 1 большой массив, в котором содержится, возможно, несколько массивов объектов. Внутренний цикл будет отображаться через объекты в массиве, а внешний цикл - через массивы в основном массиве.

Я использую map, поскольку легко поддерживать эту функцию с параллельной производительностью против последовательной . Я не уверен, стоит ли держать это параллельно или есть лучший способ сделать это (возможно, для каждого цикл).

Вот код (упрощенный / обобщенный), который я сейчас использую.

    const outerPromise = information.map(async order => {
    const innerPromise = order.moreInformation.map(async singleOrder => {
        if (something) {
            const response = await axios({ ... });
            return response.specificDataField;
        }
    });

    const orders = await Promise.all(innerPromise);
    return orders.filter((obj) => obj);
});

const orders = await Promise.all(outerPromise);

return orders;

Извините, если форматирование немного отключено, отступ может быть отключен, я не могу его правильно отформатировать. Любая помощь будет оценена. Спасибо! Постскриптум Это пишется в JS / NodeJs (ExpressJs)

Edit: Я не думаю, что проблема заключается в том, чтобы потом фильтровать, поскольку объекты могут быть нулевыми; Мне нужно будет отфильтровать после возвращения innerPromise (чтобы увидеть, какие являются нулевыми?). Это, как говорится, на самом деле это 2 map заявления, которые заставляют меня чувствовать, что есть лучший способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...