[解決済み] Rx Observableで`await`するにはどうしたらいいですか?
2022-04-27 16:03:33
質問
observableでawaitできるようにしたい。
const source = Rx.Observable.create(/* ... */)
//...
await source;
素朴な試みでは、await は直ちに解決され、実行はブロックされません。
編集する 私の意図する完全なユースケースの疑似コードは、以下の通りです。
if (condition) {
await observable;
}
// a bunch of other code
他のコードを別の別の関数に移動して、それをsubscribeコールバックに渡すことができることは理解していますが、それを避けることができればと思っています。
解決方法は?
にプロミスを渡す必要があります。
await
. observableの次のイベントをプロミスに変換して、それを待ちます。
if (condition) {
await observable.first().toPromise();
}
編集注:この回答はもともと .take(1) を使っていましたが、値が来る前にストリームが終了した場合に Promise が解決されないという問題を回避するために .first() を使うように変更されました。
RxJS v8時点では。
toPromise
は削除されます。その代わりに、上記は以下のように置き換えることができます。
await firstValueFrom(observable)
関連
-
[解決済み] テスト
-
[解決済み】<select>で現在選択されている<option>をJavaScriptで取得するにはどうすればよいですか?
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] forEachループでasync/awaitを使用する
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
Vueはランニングライト形式のテキストを水平方向にスクロールする機能を実装している
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
VUEグローバルフィルターの概念と留意点、基本的な使い方
-
vueにおけるfilterの適用シーンについて解説します。
-
vueのプロジェクトでモックを使用する方法を知っていますか?
-
[解決済み】JavaScriptでインラインIF文の書き方は?
-
[解決済み】React Uncaught Error: 対象コンテナが DOM 要素でない [重複]。
-
nullのプロパティinnerHTMLを読み取れません エラーメッセージ
-
[解決済み】PromiseとObservablesの違いは何ですか?