我是Angular和RxJs和Ngrx的新手
我知道我们订阅了一个Observable并注意更改。我在Ngrx getting started
中遇到了这段代码<div>Current Count: {{ count$ | async }}</div>
问题是AsyncPipe到底是什么,它与订阅Observable有什么不同?什么时候使用,什么时候使用?
答案 0 :(得分:2)
异步管道更干净
data$ = this.service.data$;
和模板中
{{data$ | async}}
必须管理订阅。
ngOnInit() {
this.sub = this.service.data$.subscribe(data => { this.data = data });
}
ngOnDestroy() {
this.sub.unsubscribe();
}
和模板中
{{data}}
答案 1 :(得分:1)
正如@jonrsharpe所提到的,并没有什么不同。在后台,异步管道将创建一个预订并存储最新的值,如果您要预订并显示结果,则需要执行此操作。
class Banana extends Fruit implements FruitWeight {
public double payFruit() {...}
}
class Watermelon extends Fruit implements FruitVolume {
public double payFruit() {...}
}
//etc.
管道还将在组件(指令)被销毁时避免从可观察对象中退订。
在变更检测方面,可能效率更高,但我不确定。
然而,大多数情况下,它只是为了方便使用。使用interface FruitUnit extends IFruitPayment{
double getQuantityPrice();
default double payFruit() {return this.getQuantityPrice();}
}
管道比创建组件变量并在组件的async
或构造函数中进行订阅,然后跟踪要取消订阅的订阅要少。