Angular:switchMapの購読を解除する必要があります

Feeco

私は次のコンポーネントを持っています:

@Component({...})
export class AppComponent implements OnInit, OnDestroy {

  destroy$ = new Subject();
  update$ = new Subject();

  result: Result;

  constructor(service: Service) {
  }

  ngOnInit() {
    update$.pipe(
      takeUntil(this.destroy$),
      switchMap(() => this.service.get())
    ).subscribe(result => this.result = result);

    this.refresh();
  }

  ngOnDestroy() {
    this.destroy$.next();
    this.destroy$.complete();
  }

  refresh() {
    this.update$.next();
  }

}

このアプローチは正しいですか?それともtakeUntil(this.destroy$)後で電話する必要がありますswitchMapか?

update$.pipe(
  switchMap(() => this.service.get()),
  takeUntil(this.destroy$)
).subscribe(result => this.result = result);

それとも私はそれを二度呼ぶべきですか?

update$.pipe(
  takeUntil(this.destroy$),
  switchMap(() => this.service.get()),
  takeUntil(this.destroy$)
).subscribe(result => this.result = result);
kvetis

最もクリーンな方法は、takeUntilに呼び出すことswitchMapです。

update$.pipe(
  switchMap(() => this.service.get()),
  takeUntil(this.destroy$)
).subscribe(result => this.result = result);

これにより、サブスクリプションへの排出が防止されます。takeUntil以前に追加した場合switchMapサブスクリプションは、project関数によって返されるオブザーバブルが完了するまで値を出力しますが、完了しない場合があります(サービスコードによって異なります)。

ソースからのサブスクライブ解除は、それ自体がサブスクライブ解除されたときに監視可能(以前のすべてであるため、takeUntil前後の両方を呼び出す必要はありませんswitchMapswitchMapswitchMap

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Angularのpipe()の購読を解除する必要がありますか?

分類Dev

@OutputEventEmitterの購読を解除する必要がありますか

分類Dev

ngxs Selectorの購読を解除する必要がありますか?

分類Dev

Angular 2 / Rxjs:本当に購読を解除する必要がありますか?

分類Dev

Angular / RxJSすべてのajax呼び出しで購読を解除する必要がありますか?

分類Dev

Angularのhttp呼び出しの購読を解除する必要がありますか?

分類Dev

購読しているObservablesから常に購読を解除する必要がありますか?

分類Dev

Angular subscribe to updateメソッド、いつ購読を解除する必要がありますか

分類Dev

Observableが終了した場合、Observableの購読を解除する必要がありますか?

分類Dev

C#で使用した後、ボタンイベントの購読を解除する必要がありますか?

分類Dev

ルートAngularコンポーネントのオブザーバブルの購読を解除する必要がありますか?

分類Dev

rxbindingを使用するときに購読を解除する必要がありますか?

分類Dev

RxJS 6-パイプで最初に使用するときに購読を解除する必要がありますか?

分類Dev

Angular Formの変更を解除する必要がありますか?

分類Dev

switchMapをAngularHTTP-Requestに登録解除する必要がありますか

分類Dev

reduxを使用する場合、reactコンポーネントで購読解除をどのように処理する必要がありますか?

分類Dev

副作用を防ぐために、バックエンドサービスの購読を解除/完了する必要がありますか?

分類Dev

RxJava-購読解除についていつ心配する必要がありますか?

分類Dev

RxJava-購読解除についていつ心配する必要がありますか?

分類Dev

CFArrayの割り当てを解除する必要がありますか?

分類Dev

Cold Observableの登録を解除する必要がありますか?

分類Dev

magentoのmailchimpを追加すると、すべての新しいニュースレターの購読が購読解除になります

分類Dev

Raspberry Pi Deviceを購入する必要がありますか?

分類Dev

AsyncSubjectの購読を解除しますか?

分類Dev

Angular Form statusChanges / valueChanges observableのサブスクライブを解除する必要がありますか?

分類Dev

Angular4-setTimeout呼び出しのサブスクライブを解除する必要がありますか?

分類Dev

fusedLocationProviderClientのlocationcallbackの登録を解除する必要がありますか?

分類Dev

型変換のラップを解除する必要がありますか?

分類Dev

登録を解除する必要がありますか

Related 関連記事

  1. 1

    Angularのpipe()の購読を解除する必要がありますか?

  2. 2

    @OutputEventEmitterの購読を解除する必要がありますか

  3. 3

    ngxs Selectorの購読を解除する必要がありますか?

  4. 4

    Angular 2 / Rxjs:本当に購読を解除する必要がありますか?

  5. 5

    Angular / RxJSすべてのajax呼び出しで購読を解除する必要がありますか?

  6. 6

    Angularのhttp呼び出しの購読を解除する必要がありますか?

  7. 7

    購読しているObservablesから常に購読を解除する必要がありますか?

  8. 8

    Angular subscribe to updateメソッド、いつ購読を解除する必要がありますか

  9. 9

    Observableが終了した場合、Observableの購読を解除する必要がありますか?

  10. 10

    C#で使用した後、ボタンイベントの購読を解除する必要がありますか?

  11. 11

    ルートAngularコンポーネントのオブザーバブルの購読を解除する必要がありますか?

  12. 12

    rxbindingを使用するときに購読を解除する必要がありますか?

  13. 13

    RxJS 6-パイプで最初に使用するときに購読を解除する必要がありますか?

  14. 14

    Angular Formの変更を解除する必要がありますか?

  15. 15

    switchMapをAngularHTTP-Requestに登録解除する必要がありますか

  16. 16

    reduxを使用する場合、reactコンポーネントで購読解除をどのように処理する必要がありますか?

  17. 17

    副作用を防ぐために、バックエンドサービスの購読を解除/完了する必要がありますか?

  18. 18

    RxJava-購読解除についていつ心配する必要がありますか?

  19. 19

    RxJava-購読解除についていつ心配する必要がありますか?

  20. 20

    CFArrayの割り当てを解除する必要がありますか?

  21. 21

    Cold Observableの登録を解除する必要がありますか?

  22. 22

    magentoのmailchimpを追加すると、すべての新しいニュースレターの購読が購読解除になります

  23. 23

    Raspberry Pi Deviceを購入する必要がありますか?

  24. 24

    AsyncSubjectの購読を解除しますか?

  25. 25

    Angular Form statusChanges / valueChanges observableのサブスクライブを解除する必要がありますか?

  26. 26

    Angular4-setTimeout呼び出しのサブスクライブを解除する必要がありますか?

  27. 27

    fusedLocationProviderClientのlocationcallbackの登録を解除する必要がありますか?

  28. 28

    型変換のラップを解除する必要がありますか?

  29. 29

    登録を解除する必要がありますか

ホットタグ

アーカイブ