如何在节点js中使用forLachLimit

时间:2017-02-02 18:51:41

标签: javascript node.js express

节点js中forEachLimit的工作原理是什么。

async.forEachLimit(array,5,(item,callback)=>{
    //something
},(err)=>{
    //end of loop
})

2 个答案:

答案 0 :(得分:1)

forEachLimit()中的第二个参数是异步操作的最大限制。

来自documentation

  

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.'
        });
    });
});