zey*_*yue 2 javascript node.js rxjs reactivex
如果我已经有了一个 observable,那么我应该使用什么操作符来让这个 observable 产生价值,比如每 1 秒?
// this just an example, In my project, I can't control when the
// observable will produce value. I can assume that it will produce
// value very fast.
const obs = from([1,2,3,4,5]);
Run Code Online (Sandbox Code Playgroud)
obs 会非常快地发出值 1,2,3...。但是如果我希望它每 1 秒发出一次值呢?我的意思是,只要确保 obs 发出值不要太快?
我检查了reactivex 的文档,但找不到操作员这样做。例如,延迟,它只是使值产生延迟一段时间,但保留了值之间的相对时间间隔,而 debounceTime 确实会定期产生值,但会忽略该时间窗口的值。
有人可以告诉我如何使可观察的产品在一段时间内产生价值而不遗漏或忽略价值吗?
你可以像这样用一个可观察的间隔来压缩它:
import { zip, from, interval } from rxjs
const obs = zip(
from([1,2,3,4,5]),
interval(1000),
(val, i) => val // Just emit the value
)
obs.subscribe(val => console.log(val))
Run Code Online (Sandbox Code Playgroud)
如果您希望立即发出第一个值,则可以使用timer而不是interval:
import { zip, from, timer } from rxjs
const obs = zip(
from([1,2,3,4,5]),
timer(0, 1000),
(val, i) => val // Just emit the value
)
obs.subscribe(val => console.log(val))
Run Code Online (Sandbox Code Playgroud)
如果您愿意,也可以使用管道,如下所示:
import { from, interval } from rxjs
import { zip } from rxjs/operators
const obs = from([1,2,3,4,5])
.pipe(
zip(interval(1000), val => val)
)
obs.subscribe(val => console.log(val))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2842 次 |
| 最近记录: |