Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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 我可以用1个wait等待2个异步操作吗?_Javascript_Node.js_Async Await - Fatal编程技术网

Javascript 我可以用1个wait等待2个异步操作吗?

Javascript 我可以用1个wait等待2个异步操作吗?,javascript,node.js,async-await,Javascript,Node.js,Async Await,我有一个节点模块,它导出承诺并解析数据库连接。当它解决时,我使用连接来查询记录,这是另一个异步操作。我可以用1 wait执行这两个异步操作吗 在这种情况下,查询异步调用依赖于解析到db连接的异步承诺 模块 module.exports = { db: new Promise((acc, rej) => { if (!db.authenticated) { sequelize.authenticate() .then((res) => {

我有一个节点模块,它导出承诺并解析数据库连接。当它解决时,我使用连接来查询记录,这是另一个异步操作。我可以用1 wait执行这两个异步操作吗

在这种情况下,查询异步调用依赖于解析到db连接的异步承诺

模块

module.exports = {
  db: new Promise((acc, rej) => {
      if (!db.authenticated) {
        sequelize.authenticate()
        .then((res) => {
            db.authenticated = true;
            acc(db);
        })
        .catch((err) => {
            rej(err)
        });
      } else {
        acc(db);
      }
  })
};
用法


在回复我的评论时使用
wait Promise.all([first(),second()])

promise.All()
方法将返回一个承诺,当所有承诺作为一个iterable传递或iterable不包含任何承诺时,该承诺将最终解析。它将以拒绝的第一个承诺为理由拒绝

范例

异步函数一(){
返回新承诺(解决=>{
解决(‘一’)
})
}
异步函数二(){
返回新承诺(解决=>{
解决(“两个”)
})
}
异步函数run(){
return wait Promise.all([one(),two()]);//one wait
}
运行()。然后((响应)=>{
//单独访问
console.log(响应[0]);//一个
console.log(响应[1]);//两个
//一起进入
控制台日志(响应);

})
你能澄清一下这句话吗<代码>查询,另一个异步操作,记录
。不确定您在问什么。查询是另一个异步操作。一个操作是否依赖于另一个操作的输出?如果是,那么答案是您不能同时执行这两个操作。使用
wait Promise.all([someCall(),anotherCall()])
如果第二个调用依赖于第一个调用的结果,可能会重复什么?@好问题,请检查我更新的帖子,并告诉我这是否是你要问的。@Raymond我有一个问题,正如TemporaryFix所说,async second()依赖于first(),这两个方法都是async HttpClient调用,我使用了你的解决方案,但在我的案例中它不起作用。我的问题是,你能看一下吗?@KDFinal Second示例如果你注意到调用了
first()
,那么我们调用
then()
,这意味着
Second()
函数调用取决于第一个。@KDFinal你还需要帮助吗?
const db = require('../db/db.js').db;
const existingUser = await db.Person.findOne({where : {email : body.email}});