Das folgende Beispiel stammt aus der @ngrx example.Welchen Vorteil hat die MergeMap in diesem @ ngrx-Beispiel?
Ich verstehe dieses Observable auf diese Weise. Die erste map
Funktion erhält die payload
, die das Buch hinzugefügt wird, wieder von der mergeMap
verarbeitet, wo es in der Datenbank speichert.
Originalcode:
@Effect()
addBookToCollection$: Observable<Action> = this.actions$
.ofType(collection.ActionTypes.ADD_BOOK)
.map((action: collection.AddBookAction) => action.payload)
.mergeMap(book =>
this.db.insert('books', [ book ])
.map(() => new collection.AddBookSuccessAction(book))
.catch(() => of(new collection.AddBookFailAction(book)))
);
Kann der folgende Code das gleiche tun wie die oben? Warum ist ein mergeMap
erforderlich?
Modified Code:
@Effect()
addBookToCollection$: Observable<Action> = this.actions$
.ofType(collection.ActionTypes.ADD_BOOK)
.map((action: collection.AddBookAction) =>
this.db.insert('books', [ action.payload ])
.map(() => new collection.AddBookSuccessAction(action.payload))
.catch(() => of(new collection.AddBookFailAction(action.payload)))
);