JavaScript - Получить соответствующий запрос на ответ Promise.all - PullRequest
0 голосов
/ 22 ноября 2018

Я создаю массив Обещаний для одновременного запуска, например:

let categories = ["cat1", "cat3", "cat3"];
let categoryRequests = []; // array of promises
categories.forEach(category => {
    categoryRequests.push(getCategoryResult({category})); // getCategoryResult returns a promise
});

Как только все обещания разрешены, я получаю массив ответов, например:

let categoryResponses = await Promise.all(categoryRequests);
categoryResponses.forEach(categoryResponse => {
    categoryResponse.categoryType = "???"; // should be a value from categories array
});

Я хочу добавить поле «categoryType» к каждому ответу, соответствующее категории, которая использовалась в начальном запросе.Насколько я понимаю, массив ответов НЕ находится в том же порядке, что и массив обещаний.

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

Есть ли способ сопоставить начальный запрос с массивом ответов?

1 Ответ

0 голосов
/ 22 ноября 2018

Порядок сохраняется, иначе было бы невозможно соотнести разрешенные обещания с запросами.

См. Документацию Promise.all () :

Возвращенные значения будут в порядке выполненных Обещаний, независимо от порядка выполнения.

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