Mam pewien kod, który jest iteracją na liście, która została przeszukiwana z bazy danych i wysyła żądanie HTTP dla każdego elementu na tej liście. Lista ta może czasami być dość dużą liczbą (w tysiącach) i chciałbym się upewnić, że nie trafię na serwer WWW z tysiącami równoczesnych żądań HTTP.Jaki jest najlepszy sposób ograniczenia współbieżności przy użyciu opcji Promise.all() ES6?
skrócona wersja tego kodu aktualnie wygląda tak ...
function getCounts() {
return users.map(user => {
return new Promise(resolve => {
remoteServer.getCount(user) // makes an HTTP request
.then(() => {
/* snip */
resolve();
});
});
});
}
Promise.all(getCounts()).then(() => { /* snip */});
Ten kod jest uruchomiony na węźle 4.3.2. Aby powtórzyć, czy można zarządzać Promise.all
, tak aby w danym momencie realizowana była tylko określona liczba obietnic?
możliwe duplikat [Limit współbieżności obietnicy prowadzony] (http://stackoverflow.com/q/38778723/1048572) – Bergi
Nie zapominaj, że [ 'Promise.all 'nie zarządza obiecującym postępem] (http://stackoverflow.com/a/30823708/1048572) - obietnice robią to same,' Promise.all' tylko czeka na nich. – Bergi
Unikaj konstruktora "Promise" antipattern (http://stackoverflow.com/q/23803743/1048572)! – Bergi