RxJS:如何延迟RxJS.Observable.if中ELSE的执行?
我有一个可能存在也可能不存在的对象。我正在使用RxJS:如何延迟RxJS.Observable.if中ELSE的执行?,rxjs,redux-observable,Rxjs,Redux Observable,我有一个可能存在也可能不存在的对象。我正在使用Observable.if来确定基于其存在的操作 但是,即使对象未定义,Observable.if的else部分似乎仍在运行。我收到以下错误:TypeError:无法读取未定义的属性“genesisHash” console.log("jjjjjjjjjjjjjjjj: ", t); // prints out jjjjjjjjjjjjjjjj: undefined return Observable.if( () => !t
Observable.if
来确定基于其存在的操作
但是,即使对象未定义,Observable.if的else
部分似乎仍在运行。我收到以下错误:TypeError:无法读取未定义的属性“genesisHash”
console.log("jjjjjjjjjjjjjjjj: ", t); // prints out jjjjjjjjjjjjjjjj: undefined
return Observable.if(
() => !t,
Observable.of(nodeActions.requestGenesisHashes()),
Observable.of(
nodeActions.treasureHunt({
genesisHash: t.genesisHash // error occurs here
})
)
);
如何延迟对nodeActions.com的调用,使其不会尝试查看t
上的genesisHash
属性
顺便说一下,我是通过redux observable来使用它的。因此使用操作。您的then/else observable创建没有包装在函数中,因此当传递到(…)函数的
observable.时,将运行else observable设置代码。您可能只需要使用常规的if/else类型的逻辑:
const actions=!TnodeActions.requestGenesisHashes():
nodeActions.fuseHunt({genesisHash:t.genesisHash});
(行动)的可观察回报;
如果您真的想使用该方法,您可以手动创建可观察对象:
returnobservable.if(
()=>!t,
of(nodeActions.requestGenesisHashes())的可观测值,
可观察。创建(obs=>{
obs.next(nodeActions.treasehunt({genesisHash:t.genesisHash}));
obs.complete();
});
);
这将延迟t
变量的使用,直到有东西试图订阅可观察到的,这是永远不会发生的