关于 RXJS 的 async 管道和 ts 中对 subscribe 的选择的问题

来源:5-7 操作符和 Async 管道

蜻蜓01

2020-03-14

老师您好,我看这节中对流A的处理,有几个疑问:简单的方式是在html 模板中使用 async 管道进行监听,如果在 ts 文件中其他函数,因为某些业务需要需要,也要使用流的返回值
1、是否只能是在 ts 中进行监听并复制给一个变量 this.params = ‘tab’ 这样使用才方便?
2、如果不是赋值给一个变量,如果在其他函数中每次使用时都再次监听(first())这样是否优雅?
3、这种稍微复杂点的场景是否不推荐使用 async 来监听?
4、也就是 async 适用于简单的场景?

谢谢啊

写回答

1回答

接灰的电子产品

2020-03-15

首先 async 管道方式肯定是推荐的,不论复杂还是简单。你说的问题可以采用外面嵌套一个 ngIf 并起一个别名来达成各个属性的访问。

<ng-container *ngIf="stream$ | async as s">
    <div [foo]="s.foo"></div>
    <div [bar]="s.bar"></div>
</ng-container>

当然确实有时候是无法使用 async 管道的,这种情况下引入成员变量没问题,只是需要注意在 ngOnDestroy 中要销毁订阅

1
2
接灰的电子产品
所以配合onpush策略进行效果最佳
2020-07-18
共2条回复

Angular 开发拼多多webapp 从基础到项目实战

高仿拼多多WebApp,带你在实战环境中学习Angular

1322 学习 · 451 问题

查看课程