我有这段代码,你能解释一下TAP函数在这里做什么吗?
resend(id: number): void {
this.orderService.resend(id).pipe(tap(() => { // TAP ()
this.snackBarService.successMessage('table.resend_success_message');
},
error => this.snackBarService.errorMessage(),
)).subscribe(() => {
return this.getList(this.params);
});
}发布于 2022-10-05 06:26:08
@Eliseo的评论是正确的,但我将尝试给您举一个例子。在你的例子中,这和做这件事是一样的:
this.orderService.resend(id).subscribe(() => {
this.snackBarService.successMessage('table.resend_success_message');
return this.getList(this.params);
});但这种方法也有一些不利之处。如果你想从很多地方订阅this.orderService.resend(id),你总是需要打电话给this.snackBarService.successMessage。这是错误的做法,因为我们不想多次重写相同的代码。
因此,一个解决办法是:
resend$(id):Observable<any> { // this will return your list
return this.orderService.resend(id).pipe(
tap(() => this.snackBarService.successMessage('table.resend_success_message')),
map(() => this.getList(this.params))
);
});
test(){
this.resend$(1).subscribe(
myList => {
// here you will have the list, no need to successMessage()
}
);
}如您所见,我们可以在多个地方调用this.resend$(1).subscribe(),不需要再调用this.snackBarService.successMessage了
https://stackoverflow.com/questions/73956299
复制相似问题