Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 等待所有不同的承诺完成nodejs(异步等待)_Javascript_Node.js_Asynchronous_Async Await - Fatal编程技术网

Javascript 等待所有不同的承诺完成nodejs(异步等待)

Javascript 等待所有不同的承诺完成nodejs(异步等待),javascript,node.js,asynchronous,async-await,Javascript,Node.js,Asynchronous,Async Await,我目前正在等待所有承诺按如下顺序完成: (async() => { let profile = await profileHelper.getUserData(username); let token = await tokenHelper.getUserToken(username); console.log(profile); console.log(token); return {profile: profile, token: token}; })();

我目前正在等待所有承诺按如下顺序完成:

(async() => {
  let profile = await profileHelper.getUserData(username);
   let token = await tokenHelper.getUserToken(username);
   console.log(profile);
   console.log(token);
   return {profile: profile, token: token};
})();
但通过这种方式,配置文件和令牌按顺序执行。因为两者都是相互独立的,所以我希望它们都能独立地一起执行。我认为使用Promise.all可以做到这一点,但我不确定语法,也找不到任何帮助

因此,我的问题是如何将上述api调用转换为一起运行,然后返回最终输出。

使用
Promise.all()
方法:

(async() => {
  const [ profile, token ] = await Promise.all([
    profileHelper.getUserData(username),
    tokenHelper.getUserToken(username)
  ]);

  return { profile, token };
})();
(async() => {
 let [ profile, token ] = await Promise.all(
  [profileHelper.getUserData(username), 
  tokenHelper.getUserToken(username)
 ])
 return {profile: profile, token: token};
})();

您想使用

all(iterable)方法返回一个解析的承诺 当iterable争论中的所有承诺都已解决或 当iterable参数不包含承诺时。它拒绝与 拒绝第一个承诺的理由


Promise.all方法返回一个承诺,当参数中的所有承诺都已解决或参数不包含任何承诺时,该承诺将得到解决

exports.getServerDetails = async (req, res, next) => {
var getCount = [];
const [ onlineUser, countSchool ] = await Promise.all([
    getOnlineUsers(), // online user count
    getRegisterUser(), // register user
    getRegisterSchools(), // register school count
]);
getCount = [
            {"Online Users": onlineUser},
            {"Registered Users" : countSchool}
        ];
sendJSONresponse(res, 200, {
    status: 'success',
    data: getCount
})
}
async function getOnlineUsers() {
return Login.count({'onlineStatus': 1}, (err, count) => {
    if (err) {
        return err;
    }
    return count;
});
}

async function getRegisterUser() {
return Login.count({}, (err, totResUser) => {
    if (err) {
        return err;
    }
    return totResUser;
})
}

async function getRegisterSchools() {
return Login.count({'role': 'Admin'},(err, totalSchool) => {
    if (err) {
        return err;
    }
    return totalSchool;
})
}

let[profile,token]=wait Promise.all([profileHelper.getUserData(username),tokenHelper.getUserToken(username)])
两个答案几乎同时给出,解释几乎相同。。所以随机选择。两个答案几乎同时出现,解释几乎相同。。所以随机选择。
exports.getServerDetails = async (req, res, next) => {
var getCount = [];
const [ onlineUser, countSchool ] = await Promise.all([
    getOnlineUsers(), // online user count
    getRegisterUser(), // register user
    getRegisterSchools(), // register school count
]);
getCount = [
            {"Online Users": onlineUser},
            {"Registered Users" : countSchool}
        ];
sendJSONresponse(res, 200, {
    status: 'success',
    data: getCount
})
}
async function getOnlineUsers() {
return Login.count({'onlineStatus': 1}, (err, count) => {
    if (err) {
        return err;
    }
    return count;
});
}

async function getRegisterUser() {
return Login.count({}, (err, totResUser) => {
    if (err) {
        return err;
    }
    return totResUser;
})
}

async function getRegisterSchools() {
return Login.count({'role': 'Admin'},(err, totalSchool) => {
    if (err) {
        return err;
    }
    return totalSchool;
})
}