Han*_*tri 3 javascript asynchronous rxjs
使用RxJS,我想调用两个不同的异步操作,这些操作可能会也可能不会返回null.他们也可能无限期地完成任务.
我想实现以下目标:
null,则返回null.我想我可以完成前两个简单如下:
const bothOperations = merge(callA(), callB());
const firstSuccess = bothOperations.first(res => res !== null);
return firstSuccess;
Run Code Online (Sandbox Code Playgroud)
但是,我如何获得第三种可能性呢?
我想你可以这样做(我假设你正在使用RxJS 5.5):
merge(callA(), callB())
.pipe(
filter(v !== null),
concat(of(null)),
take(1),
)
Run Code Online (Sandbox Code Playgroud)
该take(1)运营商可以确保只有一个价值传递和concat(of(null))追加null两个源观测结束后.
请注意,如果两个源Observable都无限期地运行,那么它永远不会完成.timeout()但是你可以添加运算符.