2
condition
フィールドに返される値によっては、repeat
に約束しています。 v
が未定義であり、ランダムTypeError: Cannot read property 'condition' of undefined
放射値に応じてRxJSが繰り返されます
をスローにconsole.logのO/Pは{ Items: [ 1, 2, 3, 4, 5 ], condition: 5, time: 1513827310333 }
const source = Rx.Observable.fromPromise(
Promise.resolve({
Items: [1, 2, 3, 4, 5],
condition: Math.floor(Math.random() * 10),
time: +new Date()
})
);
source
.map(val => val)
.repeatWhen(val => {
return val.map(v => { // v is undefined
if (v.condition > 0) {
return Rx.Observable.of(v);
} else {
return Rx.Observable.empty();
}
});
})
.finally(() => {
done();
})
.subscribe(val => console.log(val));
またごとのサブスクリプションの状態に外部の状態を変更するには、 'defer'を使用することができます:' constの繰り返し= Rx.Observable.defer(()=> {状態を聞かせて、ソース。 .repeatWhen(/ * etc. * /);}); '外部状態は避けるのが最善です。 – cartant
@cartant素晴らしいアイデア。これをテストしてお知らせします。 – nilobarp
前のコメントのコードで 'source'の前に' return'があったはずです。次に、 'finally'と' subscribe'を 'repeats'で観測します。 – cartant