Rxjs。嵌套的条件可观察项,暂停;“主要”;可观察
我有以下发现:Rxjs。嵌套的条件可观察项,暂停;“主要”;可观察,rxjs,Rxjs,我有以下发现: const observable = new Observable(subscriber => { subscriber.next(1); subscriber.next(2); subscriber.next(3); }) 我想以这种方式订阅: observable.subscribe({ next(x) { console.log('got value ' + x); if (x == 2) { const observ
const observable = new Observable(subscriber => {
subscriber.next(1);
subscriber.next(2);
subscriber.next(3);
})
我想以这种方式订阅:
observable.subscribe({
next(x) {
console.log('got value ' + x);
if (x == 2) {
const observable2 = new Observable(subscriber => {
subscriber.next('a');
subscriber.next('b');
subscriber.next('c');
})
observable2.subscribe(...)
}
},
error(err) { console.error('something wrong occurred: ' + err); },
complete() { console.log('done'); }
});
我可以观察到哪些数据会“抛出”,如果数据等于某个特定值,我需要
在我看来,以这种方式处理可观察对象将使代码难以长期维护。如果您要订阅多个观察对象,您还必须处理它们的订阅等 因此,对于这个特定的案例,我将如何解决它:
const source=of(1,2,3);
常量订阅=源
.烟斗(
/**
*“暂停”是主要的可观察到的
*在完成此内部订阅之前,无法获取下一个发出的值
*/
concatMap(v=>{
//if块
如果(v==2){
//从条件中获取一些数据
报税表(“a”、“b”、“c”);
}
返回(“默认值”);
}),
)
.subscribe(v=>console.log('value received!',v))
concatMap
是其中一种
它还将返回一个observable,其订阅将由concatMap
在内部处理
阅读第一条评论后编辑
const microS1$=。。。;
微秒1$
.烟斗(
//在此处插入您的情况
过滤器(内容=>typeof内容===“字符串”)
)
.订阅(d=>{
//将数据发送到第二个微服务
microservicetw.sendData(d);
})
是的,建议不错,但问题是我没有预定义的值(1,2,3或“a”、“b”、“c”)。observable和observable 2是来自另一个微服务的流式数据。如果从observable接收到的数据是内容(字符串),我们将该数据传递给另一个微服务(observable 2),该微服务将传输另一个数据谢谢。实际上这里不需要过滤器,情况是:若来自第一个观察者的数据不是字符串,我们只需将其保存到局部变量(让文档)。如果数据是字符串-我们将此数据发送给第二个microservice,后者返回另一个数据(data2)。最后,我们将数据2添加到变量document中,并且再次-如果数据不是string-let document=data,如果数据是string-等待来自第二个微服务的响应并将其附加到文档中。。。