javascript - 使用异步库等待队列中的所有任务完成以返回值

标签 javascript node.js asynchronous async-await

我使用异步库使用队列同时执行一些任务,我的问题是我更新了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/

相关文章:

node.js - 聚合并展平 MongoDB 中的数组字段

c# - GetAsync azure 调用没有结果

javascript - 为什么 Sonarqube 告诉我 await 在异步函数中是多余的

javascript - 监听新注册的事件处理程序

javascript - Javascript 中的 try-catch 语句捕获哪些类型的错误?

php - 如何在 JavaScript 中访问这个关联数组?

javascript - d3js 中的简单哈希模式 SVG

node.js - '{}' 类型缺少 'Request' : get, 类型 header 、accepts、acceptsCharsets 和 67 个其他属性中的以下属性

mysql - 定义 Sequelize 模型,例如所有插入的条目应为小写

javascript - NodeJS 中的日期未正确更新