Angular

【Angular】toPromiseが使えなくなるというお話

マナビト
マナビト
こんにちはマナビトです。
普段はフロントエンドエンジニアとしてJavaScript/TypeScript/Aangular/GraphQLを
メインに開発業務を行なっています。

先日記事を読んでいて、RxJS7で使用していたtoPromiseメゾットがRxJS8では使用できなくなるため、toPromiseは非推奨ですという記事を見つけました。(2020年6月の記事なので結構前...)Observableで渡ってくる値をPromiseに変換してくれるので割と重宝していたので残念です。

toPromiseメゾットの代わりに使用が推奨されているのがlastValueFromオペレータやfirstValueFromオペレータです。公式ドキュメントを参照すると、最初にObservableで渡ってきた値をPromiseに変換し、subscriptionをクローズしてくれるようです。

import { interval, firstValueFrom } from 'rxjs';
     
async function execute() {
   const source$ = interval(2000);
   const firstNumber = await firstValueFrom(source$);
   console.log(`The first number is ${ firstNumber }`);
}
     
execute(); // 'The first number is 0'

もしRxJSのバージョンが6以前であった場合、pipeオペレータはベータ段階であるため、以前としてtoPromiseメゾットを使用する方が良さそうですね。

本日はここまでとなります。