RxJS:如何延迟 RxJS.Observable.if 中 ELSE 的执行?
RxJS: How to delay execution of the ELSE in RxJS.Observable.if?
我有一个可能存在也可能不存在的对象。我正在使用 Observable.if
来根据它的存在来确定要执行的操作。
然而,即使对象未定义,Observable.if 的 else
部分似乎也是 运行。我收到此错误:TypeError: Cannot read property 'genesisHash' of undefined
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.treasureHunt 的调用,使其不会尝试查看 t
上的 genesisHash
属性?
顺便说一句,我通过 redux-observable 使用它。因此使用动作。
您的 then/else observable 创建未包含在函数中,因此传递给 Observable.of(...)
函数时,else observable 设置代码为 运行。您可能只需要使用常规 if/else 类型的逻辑:
const actions = !t ? nodeActions.requestGenesisHashes() :
nodeActions.treasureHunt({ genesisHash: t.genesisHash });
return Observable.of(actions);
如果你真的想使用那个方法,你可以手动创建 Observable:
return Observable.if(
() => !t,
Observable.of(nodeActions.requestGenesisHashes()),
Observable.create(obs => {
obs.next(nodeActions.treasureHunt({ genesisHash: t.genesisHash }));
obs.complete();
});
);
这应该会延迟 t
变量的使用,直到有人尝试订阅可观察对象,而这永远不会发生。
我有一个可能存在也可能不存在的对象。我正在使用 Observable.if
来根据它的存在来确定要执行的操作。
然而,即使对象未定义,Observable.if 的 else
部分似乎也是 运行。我收到此错误:TypeError: Cannot read property 'genesisHash' of undefined
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.treasureHunt 的调用,使其不会尝试查看 t
上的 genesisHash
属性?
顺便说一句,我通过 redux-observable 使用它。因此使用动作。
您的 then/else observable 创建未包含在函数中,因此传递给 Observable.of(...)
函数时,else observable 设置代码为 运行。您可能只需要使用常规 if/else 类型的逻辑:
const actions = !t ? nodeActions.requestGenesisHashes() :
nodeActions.treasureHunt({ genesisHash: t.genesisHash });
return Observable.of(actions);
如果你真的想使用那个方法,你可以手动创建 Observable:
return Observable.if(
() => !t,
Observable.of(nodeActions.requestGenesisHashes()),
Observable.create(obs => {
obs.next(nodeActions.treasureHunt({ genesisHash: t.genesisHash }));
obs.complete();
});
);
这应该会延迟 t
变量的使用,直到有人尝试订阅可观察对象,而这永远不会发生。