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

rmcsharry

いくつかの場所で、setTimeoutを呼び出す必要がありました。例:

setTimeout(() => this.isSaving[index] = false, 500);

コンポーネントが破棄された場合、そのタイムアウトは引き続き発生しますか?言い換えると、次のように、返されたオブザーバブルをキャプチャする必要がありますか?

this.subTimeout = setTimeout(() => this.isSaving[index] = false, 500);

次に、破棄フックでサブスクライブを解除します。

ngOnDestroy() {
  this.subTimeout.unsubscribe();
}

コンポーネントで複数のsetTimeoutを開始する必要がある場合、これは面倒になります。それらすべてを破壊する簡単な方法はありますか?多分takeUntil(destroy $)のように?

ビートルジュース

setTimeout呼び出しのサブスクライブを解除する必要がありますか?...コンポーネントが破棄された場合、そのタイムアウトは引き続き発生しますか?

コールバックが繰り返し実行されることを心配する必要はありません。setTimeout一度だけ実行すると、死んでしまいます。ただし、コンポーネントが破棄された後にのみ時間がなくなり、コールバックが実行される可能性を考慮することは、一般的には良い習慣です。私自身のアプリケーションでは、元に戻す必要のあるすべてのサブスクリプションを配列にスローし、に標準のバッチサブスクリプション解除ジョブがありngOnDestroyます。タイムアウトでも同じことができます。

// component property
timeOutIDs:number[] = [];
...
// triggering a timeout and capturing the id
this.timeOutIDs.push(
    setTimeout(() => this.isSaving[index] = false, 500)
);
...
// inside ngOnDestroy
this.timeoutIDs.forEach(id => clearTimeout(id));

このアプローチでは、異なるタイムアウトIDを格納するために複数の変数は必要ありません。また、常にids配列にのpush戻り値を指定すれば、すべてのタイムアウトが適切にクリアされることを確認できますsetTimeout

追記:ただしsetInterval、常に通話をキャンセルし、無制限のサブスクリプションのサブスクリプションを解除する必要があります。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

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

分類Dev

Angular 2-FormControlのvalueChangesをサブスクライブするには、サブスクライブを解除する必要がありますか?

分類Dev

Angular4のDatepicker

分類Dev

Angular4 +のRaphael

分類Dev

Angular4 / TypescriptのAngular ForEach?

分類Dev

Angularはthis.activateRouteサブスクリプションからサブスクライブを解除する必要があります

分類Dev

xmlをjsonに解析し、Angular4でサブスクライブします

分類Dev

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

分類Dev

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

分類Dev

Angular4で同等の$ locationChangeStart

分類Dev

Angular4 HttpClientTypeCheckの問題

分類Dev

すべてのRESTfulAPI呼び出しをAngularサービスで定義する必要がありますか?

分類Dev

Angular4サブスクライブからデータを返す

分類Dev

Angularディレクティブでは、サービスのサブスクリプションを解除する必要がありますか?

分類Dev

コンポーネント内のサービスから明示的にサブスクライブを解除する必要がありますか?その理由は何ですか?(Angular 7)

分類Dev

Angular4ライブラリ@Input

分類Dev

Angular4のサブスクライブのデータでnullになります

分類Dev

Angular4のサブスクライブメソッド後のAngular4 Spring Boot Data null

分類Dev

Angular4 + Redux:誰がアクションをディスパッチする必要がありますか?

分類Dev

Angular4でのBootstrap4の使用

分類Dev

Angular4からPHP関数を呼び出す方法

分類Dev

Angular 8応答を気にしない場合、リクエストをサブスクライブする必要がありますか

分類Dev

Angular4でlodashを使用する

分類Dev

SASSでAngular4を使用する方法

分類Dev

Handsontable Angular4を更新する

分類Dev

@ViewChildでsetterを使用するAngular4

分類Dev

Angular4サブスクライブが値を返さない

分類Dev

Angular4 / TypescriptサインKrakenAPI呼び出し(CryptoJS)

分類Dev

コンポーネントがHttpサービスメソッドを呼び出すかどうかのAngularユニットテスト:エラー:<spyOn>:スパイするオブジェクトが見つかりませんでした

Related 関連記事

  1. 1

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

  2. 2

    Angular 2-FormControlのvalueChangesをサブスクライブするには、サブスクライブを解除する必要がありますか?

  3. 3

    Angular4のDatepicker

  4. 4

    Angular4 +のRaphael

  5. 5

    Angular4 / TypescriptのAngular ForEach?

  6. 6

    Angularはthis.activateRouteサブスクリプションからサブスクライブを解除する必要があります

  7. 7

    xmlをjsonに解析し、Angular4でサブスクライブします

  8. 8

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

  9. 9

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

  10. 10

    Angular4で同等の$ locationChangeStart

  11. 11

    Angular4 HttpClientTypeCheckの問題

  12. 12

    すべてのRESTfulAPI呼び出しをAngularサービスで定義する必要がありますか?

  13. 13

    Angular4サブスクライブからデータを返す

  14. 14

    Angularディレクティブでは、サービスのサブスクリプションを解除する必要がありますか?

  15. 15

    コンポーネント内のサービスから明示的にサブスクライブを解除する必要がありますか?その理由は何ですか?(Angular 7)

  16. 16

    Angular4ライブラリ@Input

  17. 17

    Angular4のサブスクライブのデータでnullになります

  18. 18

    Angular4のサブスクライブメソッド後のAngular4 Spring Boot Data null

  19. 19

    Angular4 + Redux:誰がアクションをディスパッチする必要がありますか?

  20. 20

    Angular4でのBootstrap4の使用

  21. 21

    Angular4からPHP関数を呼び出す方法

  22. 22

    Angular 8応答を気にしない場合、リクエストをサブスクライブする必要がありますか

  23. 23

    Angular4でlodashを使用する

  24. 24

    SASSでAngular4を使用する方法

  25. 25

    Handsontable Angular4を更新する

  26. 26

    @ViewChildでsetterを使用するAngular4

  27. 27

    Angular4サブスクライブが値を返さない

  28. 28

    Angular4 / TypescriptサインKrakenAPI呼び出し(CryptoJS)

  29. 29

    コンポーネントがHttpサービスメソッドを呼び出すかどうかのAngularユニットテスト:エラー:<spyOn>:スパイするオブジェクトが見つかりませんでした

ホットタグ

アーカイブ