gpt4 book ai didi

javascript - Promises.js - 我做得对吗?

转载 作者:行者123 更新时间:2023-12-03 01:46:15 26 4
gpt4 key购买 nike

我的代码

//run this first
var promises = TransactionDetails.findAll({
where: {
//transaction_pincode:randomNumber,
merchant_id:req.session.userId,
transaction_verified:1
}
}).then(transactionDetails => {
var results = transactionDetails;
}).catch(function(error){
res.status(500);
console.log(error);
//res.json({error:error, stackError:error.stack});
console.log("Error at dashboard:" + error);
var results = "Error.";
});

//then only run this
Promise.all(promises).then(function(){
res.render('dashboard',{data:results});
console.log(data);
});

我想在运行 Promise.all 内的代码之前运行第一个代码块。这里的问题是,在 var Promise 中的代码完成运行之前,Promise.all 中的代码首先被执行。我该如何解决这个问题?

最佳答案

当您想要等待多个 Promise 完成时,

Promise.all 非常有用。在这种情况下,看起来您只是在等待一个。

在这种情况下,将处理移至 .then() 中更有意义,如下所示:

TransactionDetails.findAll({
where: { /*query*/ }
}).then(transactionDetails => {
res.render('dashboard',{data: transactionDetails});
console.log(transactionDetails);
}).catch(function(error){ /*error handling*/ });

代码的正常流程不会等待 Promise 完成,因此任何依赖于 Promise 结果的内容都应该位于 .then() 内。

ES7 中有一些较新的语言功能(异步/等待),这使得这个问题更容易理解,所以如果您感兴趣,可以查找一下。

关于javascript - Promises.js - 我做得对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50625370/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com