首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我必须使用async.parallel还是Q.all?如何实现?+ NodeJS

我必须使用async.parallel还是Q.all?如何实现?+ NodeJS
EN

Stack Overflow用户
提问于 2018-08-23 19:24:48
回答 1查看 408关注 0票数 1

你好,我有以下代码,我想使用async.parallelQ.all函数进行函数调用的并行执行。

我应该使用还是不使用请回复,所有您的答案都是感谢。

代码语言:javascript
复制
function getPath(x){
    return (x/100);  // It's demo here it's some big logic exist.
}

var array = [4,56,2,3,34,45,65,23,23,12,12,23,34,43,54,54];  // lack of data in array
var resultArr = [];
array.forEach(function(val){
    resultArr.push(getPath(val));
})

// After 5-8 sec, I got results. 

我可以使用async.parellelQ.all如何执行相同的操作吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-23 20:21:26

Q和promises可以混合,你甚至可以等待与A+兼容的Q promises。下面是一个使用promises的示例和另一个使用async/await的示例

代码语言:javascript
复制
function readDir(x) {
    return new Promise(function(rs){
        setTimeout(rs, x, x)
    })
}

function getPath(x) {
    return readDir(x).then(function(val){
         return val / 100
    })
}

var array = [4,56,2,3,34,45,65,23,23,12,12,23,34,43,54,54];  // lack of data in array
var resultArr = array.map(function(val) {
    return getPath(val);
});

// Q.all is the equivulant of Promise.all
Promise.all(resultArr).then(console.log)

代码语言:javascript
复制
function readDir(x) {
    return new Promise(function(rs){
        setTimeout(rs, x, x)
    })
}

async function getPath(x) {
    var val = await readDir(x)
    return val / 100;
}

async function init() {
  var array = [4,56,2,3,34,45,65,23,23,12,12,23,34,43,54,54];  // lack of data in array
  var resultArr = array.map(function(val) {
      return getPath(val);
  });
  
  var result = await Promise.all(resultArr);
  console.log(result)
}

init()

node v10附带了非常整洁的fs.promises

代码语言:javascript
复制
async function getPath(x) {
   const files = await fs.promises.readdir(x)
   console.log(files)
}

所有异步函数都返回一个promise

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51984697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档