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
变量的使用,直到有东西试图订阅可观察到的,这是永远不会发生的