异步代码中 try/catch 无法捕获 refreshData 错误的原因是什么?
异步代码中跳过 try/catch 问题的原因
在您提供的代码中,try/catch 代码没有执行的原因是因为 refreshdata 函数没有按照异步约定编写。
通常情况下,不建议在 new promise() 内使用 async 函数。如果您希望使用 await,则可以直接将外部函数声明为 async,如下所示:
const request = async (url: string, method: string, data?: any) => { // ... };
此时,request 函数的返回类型将是 promise
let isRefreshToken = false; const request = (url: string, method: string, data?: any): Promise<unknown> => { return new Promise((resolve, reject) => { // ... if (Store.getters.expiresTime && new Date().getTime() >= Store.getters.expiresTime) { refreshData().then(resolve, reject); return; } }); };</unknown>
通过将 resolve 和 reject 与 refreshdata的运行绑定,确保在 refreshdata 函数发生错误时,错误将通过 promise 传递出去。
需要注意的是,这并非同步代码。使用 await 只是异步编程的“同步写法”,而不是真正的同步。
以上就是异步代码中 try/catch 无法捕获 refreshData 错误的原因是什么?的详细内容,更多请关注www.sxiaw.com其它相关文章!