If your like me, you might have some code that looks like:
@Effect() save = this.update$.pipe(
map(action => action.payload),
switchMap(payload => this.myService.save(payload)),
tap(res => this.store.dispatch(new Notification('save success'))),
map(res => new SaveSuccess(res))
);
In this example, I need to do 2 actions in a single effect but @Effect
expects us to return a new action.
How do we solve this? Lets break out switchMap
to return a new observable array with multiple actions!
@Effect() save = this.update$.pipe(
map(action => action.payload),
switchMap(payload => this.myService.save(payload)),
switchMap(res => [
new Notification('save success'),
new SaveSuccess(res)
])
);
Boom! Just like we can return multiple actions from a single effect!
I hope you enjoyed the post, if you liked it follow me on Twitter and Github for more JavaScript tips/opinions/projects/articles/etc!