Je souhaite traiter un tableau d'objets en les déplaçant via une série d'opérations asynchrones/réseau (requêtes HTTP distantes).Rx.js concurrence avec promesses
Dans certaines de ces opérations, je voudrais m'assurer que pas plus de X éléments sont traités en même temps.
Comment puis-je y parvenir?
code Exemple:
function someAsyncOp(item) {...} // returns a promise
var source = Rx.Observable.from([{item1},{item2},...])
source
.flatMap((item) => {
// I WANT THE FOLLOWING OPERATION TO BE EXECUTING
// ON AT MAX 10 ITEMS AT A TIME, NEXT ITEM SHOULD
// BE SUBMITTED ONLY WHEN A SLOT GETS FREED AS A
// RESULT OF THE PROMISE SUCCEEDING OR FAILING
return Rx.Observable.fromPromise(someAsyncOp(item))
})
.subscribe(
console.log,
console.error,
() => console.log('completed')
)
prendre de vente (X) avant .flatMap [voir diagramm interactive] (http://rxmarbles.com/#take) –
@ valery.sntx ce qu'arrêter va mon flux source après le premier X qui signifie que tous les articles suivants ne seront jamais traités .. Je suppose. Je veux que tous les articles soient traités. – mettjus