【发布时间】:2019-03-04 14:59:04
【问题描述】:
我正在尝试使用 nodejs 和异步模块构建一个队列,但它没有按预期工作。
这是我的代码:
const async = require('async');
const queueSize = 10;
const taskHandler = function (task, done) {
task(done);
};
const myQueue = async.queue(taskHandler, queueSize);
myQueue.drain = function () {
console.log('The queue is now empty.');
};
function delay() {
return new Promise(resolve => setTimeout(resolve, 1000));
}
async function delayedLog(item) {
await delay();
console.log(item);
}
const run = async () => {
for (let item = 0; item < 30; item++) {
myQueue.push(async function (done) {
await delayedLog(item)
done();
});
}
}
(async () => {
console.log('START');
await run();
console.log('END);
})()
我想要什么:
START
// logs from delayedLog
END
输出:
START
END
// logs from delayedLog
如您所见,等待不起作用。我试图对模块进行承诺,但问题仍然存在。我尝试使用 d3-queue,但遇到了完全相同的问题。
有什么建议吗?
【问题讨论】:
标签: javascript asynchronous async-await queue async.js