gpt4 book ai didi

node.js - Bluebird.js : How to add wait for each iteration of Promise. map ?

转载 作者:搜寻专家 更新时间:2023-10-31 22:40:51 24 4
gpt4 key购买 nike

我正在使用 Promise.map 处理数组。对于每个元素,我正在执行一个返回 promise 的异步操作。但是,我想在每次调用之间引入一些延迟,因为下游对请求数量有限制。这是我想做的

return Promise.map(array, function (elem){
// perform an async call using elem
// wait for 500 ms
})

我怎样才能达到同样的效果?

最佳答案

because the downstream has a limit on the number of requests

此类问题的解决方案是限制同时发出的请求数。使用延迟只是关于如何控制它的猜测,但一点也不精确。相反,您应该从字面上限制同时进行的请求数量。

How can I achieve the same ?

幸运的是,Bluebird 有一个并发选项,可以通过设置 concurrency选项。假设您发现同时处理两个请求是安全的。然后,您可以这样做:

return Promise.map(array, function (elem){
// perform an async call, return a promise from that async call
}, {concurrency: 2});

这将管理整个数组的迭代,以便同时进行的异步操作不超过 2 个。您显然可以将 concurrency 设置为您认为合适的任何值。

Promise.mapSeries() 方法是 Promise.map() 的特例,concurrency 已设置为 1。因此,如果您真的希望调用是连续的(在任何给定时间只有一个正在进行的调用),那么您可以改用 Promise.mapSeries() 方法。

关于node.js - Bluebird.js : How to add wait for each iteration of Promise. map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35862294/

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