是否可以连接多个可观察对象?
例如: 我有 3 个功能:
ensureUserLogged():Observable<boolean>
createEntity():Observable<Entity>
checkEntity():Observable<boolean>
我想做这样的事情:
Observable.combine (ensureUserLogged(), createEntity(), checkEntity()).subscribe (
checkEntityResult => console.log (checkEntityResult),
error => console.log (error)
);
或类似的东西:
ensureUserLogged().then (logged => createEntity()).then (newEntity => checkEntity ())...
否则我需要写一个丑陋的金字塔:
ensureUserLogged().subscribe (
res => {
createEntity ().subscribe (
res => {
checkEntity ().subscribe (
res => { console.log ("I'm finally here") },
error {}
)
},
err => {
}
);
},
err => {
}
)
有什么东西可以实现我的意志吗?
谢谢
最佳答案
您需要使用 Observable.forkJoin
进行并行执行:
Observable.forkJoin(ensureUserLogged(), createEntity(), checkEntity()).subscribe (
checkEntityResult => console.log (checkEntityResult),
error => console.log (error)
);
checkEntityResult
将对应一个包含每个元素的数组:第一个为 ensureUserLogged
的结果,...
要连续执行,您需要使用flatMap
运算符:
ensureUserLogged().flatMap((resultOfEnsureUserLogged) => {
return createEntity();
}).flatMap((resultOfCreateEntity) => {
return checkEntity();
}).subscribe((resultOfChekEntity) => {
(...)
});
您会注意到您可以混合使用。例如这样的事情:
ensureUserLogged().flatMap((resultOfEnsureUserLogged) => {
return Observable.forJoin(createEntity(), checkEntity());
}).subscribe((resultOfCreateEntityAndChekEntity) => {
(...)
});
关于typescript - 连接 rxjs Observables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36221115/