2017-09-20 2 views
0

Je travaille donc avec un pipeline de traitement de données. Avec un seul article, cela fonctionne bien. Il commence à s'effondrer quand j'essaie de faire le même processus avec un tableau d'éléments. Voici ce que j'ai jusqu'ici qui fonctionne avec un seul article.RXJS - Traitement d'un tableau d'éléments

this.thingService.getThingById(thing.id) 
    .flatMap(i => { 
     return this.createThingVM(i) 
    }) 
    .flatMap(j => { 
     return this.getMoreInfoAboutTheThing(j) 
    }) 
    .flatMap(z => { 
     return this.getMoreThingData(z) 
    }) 
    .flatMap(y => { 
     return this.finalThingProcessing(y) 
    }) 
    .subscribe(x => console.log('Single thing' + JSON.stringify(x))); 
} 

Chaque étape prend un Thing and returns an Observable<Thing>.

Le traitement de la chose nécessite un ordre particulier. Quand j'essaye de faire concatmap d'abord, j'obtiens l'erreur You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.

Des suggestions?

+0

Vos étapes de traitement génèrent-elles vraiment des flux de valeurs, ou sont-elles uniquement des valeurs uniques enveloppées dans 'Observable'? Il est difficile d'imaginer que l'expansion et l'aplatissement de votre flux donnent des résultats significatifs, et c'est peut-être pourquoi le traitement de plus d'un élément vous pose des problèmes. – concat

+1

difficile de vous aider si vous ne nous dites pas ce que toutes ces fonctions retournent ou ce que votre code "brisé" ressemble – Brandon

+0

Pour clarifier, ce sont des valeurs enveloppées dans un Observable. – Ben

Répondre

0

Je l'ai compris. Certaines des méthodes étaient incorrectes. J'avais besoin de renvoyer un Observable dans tous les cas, et parfois ces requêtes HTTP échouaient.