gpt4 book ai didi

RxJS:如何设置exhaustMap并发?

转载 作者:行者123 更新时间:2023-12-01 01:40:55 24 4
gpt4 key购买 nike

我们可以在 mergeMap 上使用并发,但我认为它导致了累积。
我可以为exhaustMap 设置并发吗?

interval(500).pipe(
mergeMap(timer(3000), 3)
)

最佳答案

您可以自己创建这样的运算符。这是一个可能的实现:

const { interval, timer, of, empty } = rxjs
const { mergeMap, map, tap, filter } = rxjs.operators

const exhaustMapWithConcurrency =
(selector, concurrency = 1) =>
source => {
let active = 0;
return source.pipe(
filter(_ => active < concurrency),
tap(_ => active++),
mergeMap(selector),
tap(_ => active--)
)
}

interval(500).pipe(
exhaustMapWithConcurrency(x =>
timer(3000).pipe(
map(_ => x)
), 3)
)
.subscribe(console.log)
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.2/rxjs.umd.min.js"></script>

关于RxJS:如何设置exhaustMap并发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57532916/

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