以下示例摘自@ngrx example。這個@ngrx示例中mergeMap的好處是什麼?
我理解這種觀察方式。第一個map
函數獲取這是要添加的書籍,再由mergeMap
進行處理,將其保存到數據庫。
原始代碼:
@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)))
);
下面的代碼可以做同樣的事情上面?爲什麼需要mergeMap
?
修改代碼:
@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)))
);