首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RXJS Tap函数

RXJS Tap函数
EN

Stack Overflow用户
提问于 2022-10-05 05:44:26
回答 1查看 52关注 0票数 -1

我有这段代码,你能解释一下TAP函数在这里做什么吗?

代码语言:javascript
复制
 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);
        });
      }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-05 06:26:08

@Eliseo的评论是正确的,但我将尝试给您举一个例子。在你的例子中,这和做这件事是一样的:

代码语言:javascript
复制
this.orderService.resend(id).subscribe(() => {
    this.snackBarService.successMessage('table.resend_success_message');
    return this.getList(this.params);
});

但这种方法也有一些不利之处。如果你想从很多地方订阅this.orderService.resend(id),你总是需要打电话给this.snackBarService.successMessage。这是错误的做法,因为我们不想多次重写相同的代码。

因此,一个解决办法是:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73956299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档