gpt4 book ai didi

javascript - 派生流的最新组合

转载 作者:行者123 更新时间:2023-11-27 23:20:59 24 4
gpt4 key购买 nike

我有 3 个流,一个是主流 s1,还有两个派生流。我想获得该流的最新组合。

const O = Rx.Observable

let s1$ = O.from([1,2,3])
let s2$ = s1$.map(x => x*10)
let s3$ = s1$.map(x => x*100)

let s$ = O.combineLatest(s1$, s2$, s3$, (s1, s2, s3) => {
//console.log('s1, s2', s1, s2, s3)
return s1 + s2 + s3
})

s$.subscribe(x => {
console.log('s = ' + x)
})

输出为:

"s = 111"
"s = 112"
"s = 122"
"s = 222"
"s = 223"
"s = 233"
"s = 333"

但我想要的是:

"s = 111"
"s = 222"
"s = 333"

所以只有最后形成 s1 及其从 s2 和 s3 派生的值。实现这一目标的最佳方法是什么?

一把 fiddle : https://jsbin.com/haduvedule/edit?js,console,output

最佳答案

您必须共享 s1$ observable。即你的代码变成:

console.clear()
const O = Rx.Observable

let s1$ = O.from([1,2,3]).share()
let s2$ = s1$.map(x => x*10).delay(10000)
let s3$ = s1$.map(x => x*100)

let s$ = O.zip(s1$, s2$, s3$, (s1, s2, s3) => {
//console.log('s1, s2', s1, s2, s3)
return s1 + s2 + s3
})

s$.subscribe(x => {
console.log('s = ' + x)
})

为什么这在 SO 上得到了广泛的讨论,我鼓励看看 hot and cold observables 之间的区别。这是 Rx 的一个关键概念,也是新手常见的绊脚石。

关于javascript - 派生流的最新组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35366332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com