异步管用于自动退订观测,否则你需要 退订手动
他们大概的意思如果你将一个observable赋值给一个类属性Y:
import { interval } from 'rxjs/observable/interval';
let original = interval(1000);
class Comp {
o = original;
再后来与另一个观察的
constructor() {
setTimeout(() => {
this.o = interval(500);
}, 5000);
}
认购原来的观察到的更新属性将被设置 - 异步管将有效地调用original.unsubscribe()
。这可以看出,在来源:
@Pipe({name: 'async', pure: false})
export class AsyncPipe implements OnDestroy, PipeTransform {
...
transform(obj: Observable<any>|Promise<any>|null|undefined): any {
....
if (obj !== this._obj) {
this._dispose(); <-------------------------
return this.transform(obj as any);
}
因此,异步管道居然没在这里为 观察的意愿自动退订服务于预期的目的,即使没有异步管道。
有没有其他原因为什么需要在这里使用异步管道 case?
是的,他们用它用于不同的目的 - 把自己保存在你表现出方法所需的一些编码:
getUserList() {
return this.http.get(apiUrl);
}
// this part can be eliminated if you use ` let user of getUserList() | async`
this.getUserList().subscribe(user => {
this.userList = user;
});
<div *ngFor="let user of userlist"> <---- no need to use `async` here since `userlist` contains values, not observable
{{ user?.name }}
{{ user?.email }}
</div>