J'ai une quantité variable de promesses et je veux les exécuter en séquence avec le résultat de la promesse précédente comme paramètre du suivant. Actuellement, je réussi à les concaténer afin de les exécuter dans l'ordre:concatMap quantité variable de promesses et résultats de tuyau en tant que paramètre pour la promesse suivante
const promises = [p1, p2, p3, p4, ....];
const source$ = promises.map(p => Rx.Observable.defer(p));
const combination$ = Rx.Observable.concat(...source$);
combination.subscribe((x) => console.log(x));
Mais comment puis-je gérer maintenant les paramètres tuyau dans chaque promesse? J'ai lu que je pourrais utiliser concatMap. quelque chose comme ça:
Observable.from(p1).concatMap(res => p2(res)).concatMap(res => p3(res))
Je pense que je dois toujours retourner un nouveau concatMap dans Observable. Et aussi comment enchaîner concatMaps si un certain nombre de promesses devrait être variable?
Est-ce que quelqu'un peut me diriger dans la bonne direction? Je suis novice en matière de programmation réactive, mais pour les parties que je comprends déjà, c'est tout à fait génial!
Merci
merci pour votre réponse. J'ai adapté ta réponse à mes besoins, mais ça jette une erreur (arr [i] n'est pas une fonction) http://jsbin.com/vocomebini/edit?js,console – vacetahanna
@vacetahanna Tu tournes chaque fonction dans 'arr 'dans un Observable avec' .map (v => Rx.Observable.defer (v)); 'c'est pourquoi il lance l'erreur. Quand vous appelez 'arr [i] (prev)' 'arr [i]' n'est pas un tableau, c'est un observable. – martin
ah ok, mais quand j'essaie d'utiliser .of ou .from, alors ça ne marchera pas non plus. J'ai pensé que je pourrais tenir l'exécution des promesses jusqu'à un appel explicite. – vacetahanna