异步代码中 try/catch 无法捕获 refreshData 错误的原因是什么?

异步代码中 try/catch 无法捕获 refreshdata 错误的原因是什么?

异步代码中跳过 try/catch 问题的原因

在您提供的代码中,try/catch 代码没有执行的原因是因为 refreshdata 函数没有按照异步约定编写。

通常情况下,不建议在 new promise() 内使用 async 函数。如果您希望使用 await,则可以直接将外部函数声明为 async,如下所示:

const request = async (url: string, method: string, data?: any) => {    // ...};

登录后复制

此时,request 函数的返回类型将是 promise。

如果确实需要使用 promise 对象,则正确的做法如下:

let isRefreshToken = false;const request = (url: string, method: string, data?: any): Promise => {    return new Promise((resolve, reject) => {        // ...        if (Store.getters.expiresTime && new Date().getTime() >= Store.getters.expiresTime) {            refreshData().then(resolve, reject);            return;        }    });};

登录后复制

通过将 resolve 和 reject 与 refreshdata的运行绑定,确保在 refreshdata 函数发生错误时,错误将通过 promise 传递出去。

需要注意的是,这并非同步代码。使用 await 只是异步编程的“同步写法”,而不是真正的同步。

以上就是异步代码中 try/catch 无法捕获 refreshData 错误的原因是什么?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2661101.html

(0)
上一篇 2025年3月7日 10:55:34
下一篇 2025年2月19日 00:12:05

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论