gpt4 book ai didi

javascript - RxJS:如何包装和观察字符串的变化?

转载 作者:数据小太阳 更新时间:2023-10-29 06:14:57 26 4
gpt4 key购买 nike

RxJS:如何将原始类型(例如 string)包装在 Observable 中并监听该原始类型的变化

考虑以下示例。 setTimeout 模拟一些改变字符串 s 的外部事件。但是,console.log 仅触发一次,而不是在调用 setTimeout 之后触发。这是为什么?

let s = "Hello World";
Observable.of(s).subscribe(val => {
console.log(val);
});
// some external event changes variable s
setTimeout( () => {
s = "Wat?";
}, 1000);
// Output: prints "Hello World" to console, but not "Wat?"

这个问题可能听起来有点愚蠢,但我搜索了 2 个小时通过各种 RxJS 文档和示例,其中大部分都使用数组或对象。这不是我想要的。我不想更改属性、函数、数组或类似的东西。只是一个普通的字符串或 bool 值或数字。

最佳答案

我确实意识到这个问题有一个可接受的答案,但这是使用 RxJS 观察字符串变化的正确方法。

为类型 ReplaySubject 创建一个变量

stringVariable$: ReplaySubject<String> = new ReplaySubject<String>();

通过捕获更新事件的函数将所有新值分配给 stringVariable

assignNewValue(newValue: String) {
this.stringVariable$.next(newValue);
}

订阅这个 Observable

stringVariable$.subscribe((newValue: String) => {
console.log(newValue);
});

或者您可以使用 BehaviourSubject如果您的字符串变量有一个初始值作为开头。

关于javascript - RxJS:如何包装和观察字符串的变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41251106/

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