gpt4 book ai didi

javascript - Promise 捕获问题

转载 作者:行者123 更新时间:2023-12-01 00:51:48 25 4
gpt4 key购买 nike

尝试在我的 Node.js 应用程序中使用 Promise。但遇到了麻烦。

catch() 是否可以获取 applicationObject(刚刚在 then() 中创建)?

如何将applicationObject传递给catch()

任何情况都可能引发错误 - 无论是在 execute() 范围内的应用程序中强制抛出异常,还是系统错误。

代码示例:

new Promise((resolve, reject) => {
// Create applicationObject (used a Singleton pattern)
let applicationObject = Application.getInstance();
resolve(applicationObject);
})
.then(applicationObject => {
// Working with applicationObject
applicationObject.dbModel.beginTransaction();
applicationObject.execute();
applicationObject.dbModel.commit();
})
.catch(error => {
// In any error case try to make some actions with this object
// including rollback db changes
applicationObject.dbModel.rollback(); // How to get applicationObject?
...
}

最佳答案

首先,如果它是单例,那么您只需在 catch 中调用 Application.getInstance() 即可,如果它正确实现,那么它应该没有额外的成本。

或者,只需在 Promise 之外创建它,例如

 let applicationObject = Application.getInstance();
new Promise((resolve, reject) => {
...
})
.catch(err => {
// applicationObject is accessible
})

或者,如果它必须由 Promise 创建,那么只需在 Promise 之外创建 var,即

let applicationObject = null;
new Promise((resolve, reject) => {
applicationObject = Application.getInstance();
...
})

关于javascript - Promise 捕获问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56914984/

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