web-dev-qa-db-ja.com

Angular Http-toPromiseまたはsubscribe

私はAngular)に関するいくつかのコースを見ていて、Httpリクエストからのデータを管理するさまざまな方法があることを発見しました。

  • オブザーバブルの使用、.map().subscribe()
  • Promiseの使用、.toPromise().then().catch()

AngularJS Httpサービスに似ているので、アプリケーションでtoPromise()を使用しました。

Observableを使用する必要があるのはどのシナリオですか?

21
shammelburg

angularのデフォルトのhttpリクエストはオブザーバブルを発行します。toPromise()を呼び出すことでpromiseに変換できます。ただし、必須ではありません。Angularは、httpリクエストを1回サブスクライブ解除します呼び出すことで解決します

   `_xhr.removeEventListener('load', onLoad);
    _xhr.removeEventListener('error', onError);
    _xhr.abort();`

オブザーバブルはキャンセル可能ですが、約束はできません。

コンポーネントが破棄されてメモリリークが発生した後も、openリクエストは残ります。これは、オブザーバブルのサブスクリプションを解除するか、コンポーネントが破棄された後にdestroyメソッドを呼び出すことで防止できます。 メモリリークを防ぐためにサブスクライブを解除する方法

結論、オブザーバブルをメモリリーク防止手法で使用する方が良いでしょう。

0