登录
首页 >  文章 >  前端

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

时间:2024-11-02 13:16:00 125浏览 收藏

本篇文章向大家介绍《异步代码中 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 错误的原因是什么?》文章吧,也可关注golang学习网公众号了解相关技术文章。

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>