2
私は、ユーザIDをクッキーから受け取り、クッキーに見つからなければ、それをAPIから取得する観測可能なストリームを作成しようとしています。 RxJSでどうすればいいですか?RxJS:別の観測値から観測可能なデフォルト値を設定する
var userIdRequest = Rx.Observable.bindCallback(generateIdAsync);
var cookieUserIdStream = Rx.Observable.of(getCookieValue("user_id"))
.filter(x => x !== null);
var userIdStream = cookieUserIdStream.__ifEmptyThen__(userIdRequest()); // <<< ???
// Emulating async request for user id
// Will be a JSONp call in real app
function generateIdAsync(cb) {
setTimeout(() => {
cb(`id_${new Date().getTime()}`);
}, 300);
}
function getCookieValue(name) {
var regexp = new RegExp(`${name}=([^;]*)`);
var match = document.cookie.match(regexp);
return match && match[1];
}
だけではなく、観測との単純な値で動作しますdefaultIfEmpty
方法があります。 Bacon.jsにはストリーム用のor
メソッドがありますが、これは完璧に機能しますが、RxJSには何も表示されません。何かを見逃したり、カスタムオブザーバーを実装する必要がありますか?
感謝の男は、あなたが私の痛みを解消しました! – coquin
これはとても実用的です;) –