异步代码中跳过 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<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 错误的原因是什么?的详细内容,更多请关注抖狐科技其它相关文章!
-
怎么共享优酷vip会员账号
安全共享优酷 vip 会员账号遵循以下步骤:创建家庭共享小组。输入家庭成员用户名或手机号邀请加入。vip 会员权益将自动共享给家庭小组成员。注意事项:仅与信任的人共享;定期更改密码;最多可与 5 人共...
-
css flex 中 justify
CSS flex 中 justify-content 的 flex-start 和 start 区别解析 MDN 文档上似乎没有提及 start 和 flex-start 在 justify-cont...
-
为什么有的人微信没有朋友圈
大多数人不使用微信朋友圈是因为:1. 隐私保护问题;2. 专注于现实生活社交;3. 避免社交压力;4. 净化社交圈。此外,年龄、职业、信仰和经济/技术因素也可能影响人们对朋友圈的使用。为什么有些人没有...
-
苹果16全部配件有哪些
iphone 16 随附必需配件:闪电至 usb-c 数据线和 20w usb-c 电源适配器。此外,还有以下可选配件:magsafe 充电器、magsafe 双向无线充电底座、magsafe 皮革卡...
-
SEGA公布如龙卡拉OK名曲《像个傻瓜》电视剧版 竹内凉真演唱
由amazon prime改编的《如龙》真人电视剧《人中之龙 beyond the game》已于10月25日上线,目前imdb评分6.2/10分、metacritic均分48分。今日,SEGA官方公...