根据我的阅读,使用try/catch
是使用async/await
时处理错误的“正确”方法。但是,如果我将请求放在try/catch
块中,我遇到了尝试使用请求响应的问题:
try {
async someMethod () {
const result = await someRequest()
}
} catch (error) {
console.log(error)
}
console.log(result) // cannot access `result` because it is not defined...
因此,是否有更好的方法来处理错误并能够访问async/await
来电的请求响应?我能想到的唯一另一种方法是将整个代码块放在try/catch
块内..但我觉得有一种更优雅的方式..
提前致谢!
答案 0 :(得分:-1)
(async () => {
result = null;
async someMethod(){
result = await someRequest();
}
console.log(result)
})()
.catch(error => console.log(error));
答案 1 :(得分:-1)
您应该在块范围之外声明变量,或者不要在结果前面使用任何关键字。这样它就会使它成为一个全局变量,你可以在块代码之外访问它。你可以这样写: -
try {
async someMethod () {
result = await someRequest()
}
} catch (error) {
console.log(error)
}
console.log(result)
或者您也可以使用较短的方法而不是try catch来使代码更清晰,您也可以知道错误的来源。
async someMethod () {
result = await someRequest().catch(err=>{
console.log(err)
})
}
console.log(result)