gpt4 book ai didi

javascript - RxJS 相当于 Async.js mapLimit

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:43:11 27 4
gpt4 key购买 nike

Async.js mapLimit及其家族 <name>Limit函数基本上像信号量一样工作:它们允许有限数量的任务同时运行,同时将额外的传入任务添加到队列中。队列成为(冷?连接?)生产者。任务运行器会在有空位(其中一个任务完成)后立即从队列中排出一个项目。

这样,有限数量的并发任务始终处于事件状态。

如何在 RxJS 中实现类似的功能?

最佳答案

deferflatMapWithMaxConcurrent 的组合是 RxJs 的实现方式:

// returns a promise
function runSomeJob(input) { ... }

function runSomeJobObservable(input) {
return Rx.Observable.defer(function () {
return runSomeJob(input);
});
}

var inputStream = // some Rx.Observable

// only allow 5 jobs to run concurrently
var outputStream = inputStream
.flatMapWithMaxConcurrent(5, runSomeJobObservable);

ouputStream.subscribe(...);

关于javascript - RxJS 相当于 Async.js mapLimit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36251466/

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