我使用异步库使用队列同时执行一些任务,我的问题是我更新了drain
内的结果,但是当我在函数结束时返回结果时,它仍然具有初始值。我应该在队列上再次使用 Promise 和 async/await 吗?这是我的代码:
result = false;
const q = async.queue((task, callback) => {
console.log('Uploading : ', task.src)
s3.upload({
Bucket: outputBucket,
Key: task.desc,
Body: fs.createReadStream(task.src)
}, callback)
}, PARALLEL_TASK)
q.drain = function() {result= true;}
q.push(fileNamesReformat)
return result; // HERE It's still false!
最佳答案
我找到了解决方案,如果有人需要,我需要返回:
return q.drain()
根据异步文档,drain 是一个回调,当队列中的最后一个项目从工作线程返回时调用
关于javascript - 使用异步库等待队列中的所有任务完成以返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48781234/