节点js中forEachLimit
的工作原理是什么。
async.forEachLimit(array,5,(item,callback)=>{
//something
},(err)=>{
//end of loop
})
答案 0 :(得分:1)
forEachLimit()
中的第二个参数是异步操作的最大限制。
limit - 一次最大异步操作数。
另外,来自code comments:
@param {number} limit - The maximum number of async operations at a time.
答案 1 :(得分:1)
它的工作方式几乎与async.forEach
类似,只是它不会立即并行运行所有项目的任务。并发值是一个整数,它告诉Async允许同时运行多少个任务。假设我们的数据库一次只允许5个连接,那么我们只需将代码更改为:
app.delete('/messages/:messageIds', function(req, res, next) {
var messageIds = req.params.messageIds.split(',');
// `5` is the `concurrency` argument here
// ----------------------------↴
async.forEachLimit(messageIds, 5, function(messageId, callback) {
db.delete('messages', messageId, callback);
}, function(err) {
if (err) return next(err);
res.json({
success: true,
message: messageIds.length+' message(s) was deleted.'
});
});
});