Javascript 我可以用1个wait等待2个异步操作吗?
我有一个节点模块,它导出承诺并解析数据库连接。当它解决时,我使用连接来查询记录,这是另一个异步操作。我可以用1 wait执行这两个异步操作吗 在这种情况下,查询异步调用依赖于解析到db连接的异步承诺 模块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) => {
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}});