gpt4 book ai didi

javascript - 如何仅缓冲来自可观察源的选定项目集并立即发出其他项目?

转载 作者:行者123 更新时间:2023-11-30 13:49:07 24 4
gpt4 key购买 nike

例如,我有一个每秒发出一个数字的可观察对象。我想将它们缓冲到数组中 4 秒。但是当源发出一个可以被 5 整除的数字时,我想立即发出它而不是缓冲它。

// emit value in sequence every 1 second
// 0,1,2,3,4,5...
const source = interval(1000);

// buffer values for 4 seconds
const buffered = source.pipe(
buffer(interval(4000)),
filter(x => x.length > 0)
);

const subscribe = buffered.subscribe(val => console.log(val));

我的预期结果是:

[0,1,2,3] // buffered and emitted after 4 seconds
[5] // emitted immediately
[4,6,7,8] // buffered and emitted after 4 seconds
[10] // emitted immediately
[9,11,12,13]
// ... and so on

堆栈 Blitz :https://stackblitz.com/edit/typescript-cdvc2d?file=index.ts

最佳答案

如果有两个具有两种不同职责的可观察对象,然后将它们合并在一起呢?

const source = interval(1000);

// buffer values for 4 seconds
const buffered = source.pipe(
buffer(interval(4000)),
filter(x => x.length > 0)
);

const multipleOfFive = source.pipe(
filter(x => x % 5 === 0)
);

const subscribe = merge(buffered, multipleOfFive).subscribe(val => console.log(val));

我不确定您是否还想在第一个可观察对象中过滤 5 的倍数,但这很容易做到。

关于javascript - 如何仅缓冲来自可观察源的选定项目集并立即发出其他项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58647223/

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