Come faccio a fare qualcosa come $q.all
ma limitando quante promesse vengono eseguite contemporaneamente?
La mia domanda è come How can I limit Q promise concurrency?
voglio non più di 5 processo ha generato in un momento
La risposta accettata per quella altra domanda è una libreria scritta per promise avvolto con cui lavorare Q. Ma sono interessato in particolare a una soluzione per Angular $q
anziché per Q
.
Contesto: Il problema viene risolto:
Ho un sacco di file da scaricare in 2 fasi: a) Get URL b) scaricare il file.
Il browser limita il numero di file che possono essere recuperati contemporaneamente, quindi quando l'uso diretto delle promesse con $q.all
spegne tutti i download, solo N avviene immediatamente, ad es. in Chrome, mentre il resto è in ritardo. (vedi Max parallel http connections in a browser?)
problema è che gli URL hanno scadenza, quindi per il momento il browser esegue il N + 1 ° download di file, l'URL non è più valida.
Quindi voglio fare qualcosa di simile throttled.all(6, promises)
piuttosto che $q.all(promise)
Non male, @Malkus, grazie. Non è così concorrente come immaginavo, dal momento che il tuo esempio si rompe in blocchi di dimensione N, piuttosto che avere sempre promesse N in esecuzione ... detto questo, è sicuramente molto più concorrente di una catena sequenziale! :) – Daryn