60
задан 16 November 2016 в 21:19

1 ответ

Я предлагаю асинхронный пул библиотеки: https://описание github.com/rxaviers/async-pool

npm install tiny-async-pool

:

Выполнение несколько возврат обещания & асинхронные функции с ограниченным параллелизмом с помощью собственного ES6/ES7

asyncPool выполняют несколько возврат обещания & асинхронные функции в ограниченном пуле параллелизма. Это отклоняет сразу, как только одно из обещаний отклоняет. Это разрешает, когда все обещания завершаются. Это вызывает функцию итератора как можно скорее (под пределом параллелизма).

Использование:

const timeout = i => new Promise(resolve => setTimeout(() => resolve(i), i));
await asyncPool(2, [1000, 5000, 3000, 2000], timeout);
// Call iterator (i = 1000)
// Call iterator (i = 5000)
// Pool limit of 2 reached, wait for the quicker one to complete...
// 1000 finishes
// Call iterator (i = 3000)
// Pool limit of 2 reached, wait for the quicker one to complete...
// 3000 finishes
// Call iterator (i = 2000)
// Itaration is complete, wait until running ones complete...
// 5000 finishes
// 2000 finishes
// Resolves, results are passed in given array order `[1000, 5000, 3000, 2000]`.
0
ответ дан 1 November 2019 в 10:29

Другие вопросы по тегам:

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