gpt4 book ai didi

node.js - 嵌套 .then() 并捕获 Javascript promise

转载 作者:行者123 更新时间:2023-12-03 22:16:29 24 4
gpt4 key购买 nike

我对 Javascript promise 没有经验,最近我开始在我的 Javascript 项目中使用 promise 而不是回调。
当我试图一个接一个地运行几个 promise 函数时,我陷入了 then() 的嵌套困惑中。该代码完全按预期工作,但我的问题是,如果这是一个接一个地解析多个 promise 函数的方法,那么使用 promise 而不是回调的优势是什么。
如果我没有以正确的方式做这件事,那么这是你们要求向我展示解决嵌套 promise 的正确方法。
以下是我不喜欢的代码,它们的外观如下:

exports.editExpense = (req, res, next) => {
Account.findAll().then(accounts => {
Budget.findAll().then(budgets => {
Expense.findAll().then(expenses => {
Expense.findByPk(id).then(expense => {
res.render('expenses/index', {
urlQuery: urlQuery,
expenses: expenses,
expense: expense,
accounts: accounts,
budgets: budgets
});
})
})
})
}).catch(error => console.log(error));
};

最佳答案

您可以使用 async/await 结构进行更好的格式化

exports.editExpense = async(req, res, next) => {
try {
let accounts = await Account.findAll();
let budgets = await Budget.findAll();
let expenses = await Expense.findAll()
let expense = await Expense.findByPk(id);
if (expense) {
res.render('expenses/index', {
urlQuery: urlQuery,
expenses: expenses,
expense: expense,
accounts: accounts,
budgets: budgets
});
} else {
console.log('else') //<<- Render/Handle else condition otherwise server will hang.
}
} catch (error) {
console.error(error)
}
您应该尽量减少在函数中调用 async 的次数,因为它会影响您的性能。

关于node.js - 嵌套 .then() 并捕获 Javascript promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66265618/

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