尝试在我的 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/