gpt4 book ai didi

javascript - 来自数组的 RxJS - 观察数组并在更改时写入控制台?

转载 作者:行者123 更新时间:2023-12-04 19:53:03 26 4
gpt4 key购买 nike

.subscribe 是否可以定期监听数组及其元素,并在将新元素推送到数组时控制台记录新元素?

这是我试验过的一些代码

let arr = [1, 2, 3, 4, 5]
let arraySource = from(arr);
//output: 1,2,3,4,5

let subscribe = arraySource.subscribe(val => console.log(val));

setTimeout(() => {
arr.push(6);
},2000);

提前致谢

最佳答案

问题是 arrarr$ 没有“连接”。一旦您订阅了 arr$,最初在 arr 中的元素就会被发出,然后 observable 就完成了。进一步推送到 arr 不会通过 arr$:

const arr = [1,2,3];
const arr$ = from(arr);
arr$.subscribe(n => console.log(`n=${n}`));
arr.push(4);
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.1/rxjs.umd.min.js"></script>
<script>const {from} = rxjs;</script>

您可能应该看看 Subject 并使用 next() 推送数据。

但是,如果您不关心 arr 并且只想使用 push() 作为通过 observable 推送数据的方法,那么有一个 hacky 方法。我个人不会那样做,但出于演示目的我会展示这个:

const arr = [];
const arr$ = fromEventPattern(handler => arr.push = handler);

arr$.subscribe(n => console.log(`n=${n}`));

let i = 0;
setInterval(() => arr.push(i++), 500);
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.1/rxjs.umd.min.js"></script>
<script>const {fromEventPattern} = rxjs;</script>

关于javascript - 来自数组的 RxJS - 观察数组并在更改时写入控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55942312/

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