【发布时间】:2021-12-23 01:32:56
【问题描述】:
我想使用 pipe,map,mergeMap, 转换我的嵌套 Observables,但是在某些条件之后我希望它继续
observableFunction 是一个遍历数组的 Observable,一旦完成,您就可以继续使用操作后的数据
observableFunction(par1,par2)
.subscribe((resp) => {
i++;
//do stuff, manipulate resp
const lastIteration = someArray.length == i;
if (lastIteration) {
//do stuff
observableFunction(par1a, par2a)
.subscribe((resp) => {
observableHandleFunction(resp)
.subscribe((handledData) => {
h++;
const lastIterationSub = someNestedArray.length == h;
//do stuff, manipulate handledData
if (lastIterationSub) {
console.log("done");
});
});
}
});
如何通过使用在这种情况下使用的 rxjs 功能进行转换,使其看起来更易于阅读? 比如对mergeMap应用条件?
observableFunction(par1,par2)
.pipe(
mergeMap((res1) => {
//do stuff
CONDITION={
return observableFunction(par1a,par2a)
}
}),
mergeMap((res2) => return observableHandleFunction(res2))
)
.subscribe((res3) => {
h++;
//do stuff
const lastIterationSub = someNestedArray.length == h;
if (lastIterationSub) {
console.log("done");
}
});
使用类似这样的解决方案,它不适用于条件,导致错误
【问题讨论】:
-
从您的代码中可以看出,您在接下来的操作中根本没有在代码中使用 observableFunction 的结果?您只是使用 par1、par2 调用该函数,然后在下次调用 observableFunction 时不使用它,因为您使用的是 par1a 和 par2a,对吧?
-
它是原始的伪代码,只是为了关注逻辑而不是细节我确实使用每个可观察的结果,这就是 // do stuff 评论所指的
标签: javascript typescript rxjs observable