非同期パイプは自動退会オブザーバのために使用されているか、あるいはあなたが退会する を必要とする手動
彼らはおそらく何を意味しますかそれは、オブザーバブルをクラスプロパティに割り当てると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);
}
ので、非同期パイプは、実際にも、非同期パイプなしでここ 観測可能な意志の自動退会などの本来の目的を果たしていませんでした。
この使用で非同期パイプを使用する必要がある理由は他にありますか ケース?
はい、彼らは異なる目的のためにそれを使用 - 自分自身にあなたが示したアプローチに必要ないくつかのコーディングを保存するために:
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>