我正在尝试拥有一个池,该池位于服务器上,始终等待来自客户端的请求。然后,当客户端执行一个操作时,将该操作添加到阵列池中,并在服务器上进行处理,一旦处理完成,将其从池中删除。
我尝试使用async.eachlimit,但是每当我将项目推入数组时都不会发生。我在基本级别上也按照https://github.com/caolan/async/issues/1551使用过es6生成器,尽管对它们的理解不足以使其正常工作。
let tasksPool = [];
let processTask = async function(task) {
// await etc
}
eachLimit(tasksPool, 5, function(task, callback) {
processTask(task).then(() => {
callback();
});
});
app.get('/some-url', (req, res) => {
tasksPool.push(req.body.task);
});
但是当我向数组中添加内容时,它不会重新触发eachLimit进程。我希望eachLimit有效地监视数组的更改。我希望我能理解您的示例所发生的事情,足以自己解决这个问题,尽管以前没有看过很多语法。
我希望将项目添加到池中时,每个限制将执行添加到数组中的新项目。
有什么建议值得赞赏吗?