この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 3279|答える: 2

[その他] rxJS について firstValueFrom と lastValueFrom の違いについて

[リンクをコピー]
2024年8月6日 11:19:02 に投稿 | | | |
要件:プロジェクトはObservablesをPromiseに変換し完了を待つ必要があり、AngularプロジェクトでtoPromise()メソッドを使用する場合、ヒントは非推奨で、firstValueFromまたはlastValueFromの静的メソッドを使うことが推奨されます。



なぜtoPromise()メソッドを非推奨するのですか?

なぜなら、toPromise()メソッド名はどのPromiseが解決するかを示すことがなく、Observableは時間をかけて複数の値を生成できるためです。 Promiseに変換する際は、最初に到達する値を選ぶか最後の値を選びたいかもしれません。 これらすべての問題を解決するために、私たちはtoPromise()を非推奨化し、promiseへの変換用に2つの新しいヘルパー関数を導入することにしました。

ただ理解してください可観測量は複数の値を生成しますそれから約束は一つの値しか生み出しませんその後、最初の値を使いたいユーザーもいれば、最後の値を使いたいユーザーもいるため、firstValueFromとlastValueFromが現れます。 (注:toPromise() は観測可能な値を取得するための最後の値です

firstValueFrom例から

Observableが完了するのを待たずに最初の値を入手したいので、firstValueFromを使うと良いでしょう。 firstValueFromはObservableから最初に出力された値でPromiseを解決し、リソースを保存するために即座にサブスクライブ解除します。 もしObservableが値を一切出さずに完了した場合、firstValueFromもEmptyErrorで拒否されます。



lastValueFrom example

lastValueFromはtoPromise()とほぼ同一であり、Observableが完了したときに到達した最後の値で解析しますが、Observableが単一の値を出さずに完了した場合は異なる挙動を示します。 Observableが起動せずに完了すると、toPromise()はundefineに正しく解決され(リターン型が変わり)、lastValueFromはEmptyErrorとして拒否されます。 したがって、lastValueFrom の返還型は Promise であり<T>、RxJS 6 の toPromise() と同様です。





解析の例

RxJSでは、interval(1000)が0から1000ミリ秒(すなわち1秒)ごとに増分的な数列を放出する観測量を生成します。

次に、.pipe(take(10))は、Observableが放出する要素数を制限する演算子連鎖です。 ここで take(10) は、最初に放出された 10 の値のみを取ることを意味します。

この表現を詳しく説明しましょう:

interval(1000):1秒ごとに数値を出す観測量を作成します。 数字の列は0から始まり、1ずつ増えていきます。

.pipe(take(10)): .pipe() メソッドを使って複数の演算子を接続してください。 ここではtake(10)演算子を用い、Observableが最初の10個の値のみを出すことに制限します。

EmptyErrorエラーのテスト

コードは以下の通りです:


又は




参考:ハイパーリンクのログインが見えます。




先の:MySQLコマンドラインクエリの結果は? 疑問符
次に:Angular 18シリーズ(22台)はFontAwesomeアイコンライブラリを導入します
 地主| 2024年8月6日 11:21:09 に投稿 |
Angular HTTPでlastValueFromやfirstValueFromを使う場合、それは同等であり、違いはありません。つまり、どちらでも使えます。
 地主| 2024年10月16日 21:44:52に投稿 |
of()を返すと、シーケンスに要素がない例外が発生することがあります。lastValueFromは設定パラメータを2つ目のパラメータとして受け取り、観測可能が空のときに出すデフォルト値を指定できます:

免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com