gpt4 book ai didi

angular - tap() 与 subscribe() 设置类属性

转载 作者:太空狗 更新时间:2023-10-29 16:55:07 25 4
gpt4 key购买 nike

我是 rxjs 的新手,我只是想知道是否可以通过管道传输流并点击它来设置类属性,或者我应该在订阅中进行设置。对我来说,这两种方法都可行,只是想知道是否可以按照我认为合适的方式来做,或者有一些我不知道的事情。

演示两种方式的 Typescript 代码:

export class ViewComponent implements OnInit {

applicant = {};

constructor(public route: ActivatedRoute, private store: Store<any>) {}

ngOnInit() {
this.route.paramMap.pipe(
switchMap(params => this.store.select(state => state.applicants.entities[params.get('id')])),
tap(applicant => this.applicant = applicant)
).subscribe();
}
}

对比

export class ViewComponent implements OnInit {

applicant = {};

constructor(public route: ActivatedRoute, private store: Store<any>) {}

ngOnInit() {
this.route.paramMap.pipe(
switchMap(params => this.store.select(state => state.applicants.entities[params.get('id')]))
).subscribe(applicant => this.applicant = applicant);
}
}

最佳答案

编辑:忽略这个答案!

这是一个很好的答案:https://stackoverflow.com/a/50882183/5932590

有关更多上下文,请参阅下面 JMD 的评论!


好问题。在source code对于 tap 运算符,这条评论几乎总结了它:

This operator is useful for debugging your Observables for the correct valuesor performing other side effects.
Note: this is different to a subscribe on the Observable. If the Observable returned by do is not subscribed, the side effects specified by the Observer will never happen. do therefore simply spies on existing execution, it does not trigger an execution to happen like subscribe does.

您可以在 tap 中运行的任何副作用也可以放在 subscribe block 中。 subscribe 表示您打算主动使用源值,因为它表示“当这个 observable 发出时,我想将它的值保存在 applicants 变量中”。 tap 运算符主要用于调试,但它可以用于运行副作用。

一般来说,subscribe block 用于运行副作用,使用 tap 进行调试,但请注意 tap 可以做更多,如果你需要它。

关于angular - tap() 与 subscribe() 设置类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49184754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com