我试图创建一个类似的结构:
+----o---->
+------------o---->
+-o---->
+------------o---->
mergeAsync()
+----------------->[o, o, o, o]
我正在搜索连接数组中某些流的值的方法,我试图合并,连接或压缩结果,但我不想创建一个带有merge /的新流的concat /拉链。
你知道干净的方法吗?
const log = (stream) => {
return stream.subscribe(
x => console.log(x),
e => console.log(`onError: ${e}`),
() => console.log('onCompleted')
)
}
let m$ = Rx.Observable.range(99, 140).take(3)
const $1 = Rx.Observable.range(0, 10).take(3)
m$ = Rx.Observable.merge($1, m$).toArray()
log(m$)
答案 0 :(得分:0)
我可以使用zip来解决这个问题:
const log = (stream) => {
return stream.subscribe(
x => console.log(x),
e => console.log(`onError: ${e}`),
() => console.log('onCompleted')
)
}
const s1 = Rx.Observable.of({key: '$1'})
const s2 = Rx.Observable.of({key: '$2'})
const s3 = Rx.Observable.of({key: '$3'})
let m$ = Rx.Observable.zip(s1, s2)
log(m$)
我删除了范围,而是使用了对象(和.of
,但我可以使用.return
或其他),因为对案例没有意义。
但最终,我想将s3
信息流添加到m$
,我不知道这是怎么回事......
答案 1 :(得分:0)
听起来你可能会遇到这样的事情:
var ss$ = new Rx.Subject();
const s1$ = Rx.Observable.range(0, 3);
const s2$ = Rx.Observable.range(10, 3)
ss$
.switch()
.scan((a, c) => {
const newArray = a.slice();
newArray.push(c);
return newArray;
}, [])
.subscribe(x => console.log(x));
ss$.onNext(s1$);
ss$.onNext(s2$);
https://jsbin.com/fidowo/edit?js,console,output
ss $是可观察对象的主题,你可以将新的可观察量推向它。这些可观察对象中的每一个都是数字流,每次向任何流添加新元素时,都会发出一个包含所有值的新数组。这是你之后的事吗?