0
ここで条件(グローバル変数の存在)が満たされたときに期待されると、観察完成に結果として働いていたコードのレガシー約束ベースの作品です:RxJS
const fooPromise = new Promise(resolve => {
const interval = setInterval(() => {
if (window.foo) {
clearInterval(interval);
resolve(window.foo);
}
}, 100);
});
setTimeout(() => {
window.foo = {};
}, 1000)
const foo$ = Rx.Observable.fromPromise(fooPromise);
foo$.subscribe(
() => console.log('success'),
() => console.log('error'),
() => console.log('complete')
);
私は「すっきり観測可能な専用ソリューション、fiddleにそれを変換しようとは:m
'use strict';
setTimeout(() => {
window.foo = {};
}, 1000)
const foo$ = Rx.Observable.interval(100).map(() => foo).retry(-1)
foo$.subscribe(
() => console.log('success'),
() => console.log('error'),
() => console.log('complete')
);
私は正しい軌道に乗ってんだけど、観測可能が完了し、値でスパム続けていないように見えます。
これを修正する適切な方法は何ですか?
それは私の鼻の下に右であったおかげで、私は、間隔から退会する方法を考えてきました。 – estus
エラーの代わりに 'filter(()=> window.foo)'を使用し、無限になるまで '再試行 'を使うことをお勧めします。これはエラーが予防可能であるため(*予想される*) –
私はそれに同意する、私はこのようにしていたので、よりperformandより良い練習です。しかし、それは 'foo'だけでなく、' fooow.foo'だったことに気付かなかった。 – n00dl3