请问老师这里为什么是promise

来源:10-4 -4 取消功能的设计和实现 - demo 编写

hy_wang

2020-11-21

老师我有一个疑问

请问下老师http://img.mukewang.com/szimg/5fb8b0fe09dcc7d612540458.jpg

首先b这个axios使用一个已经取消过了的source.token。然后按照我的理解它应该是

throwIfRequested中然后throw this.reason,可是我向问下老师既然已经报错了还可以使用catch接受吗。包括我打印了一下b竟然是promise,b这个axios应该进入到xhr函数之前就throw了。为什么会return了一个promise

写回答

2回答

ustbhuangyi

2020-11-22

axios.post 内部返回的是 this,request 方法的返回值,而这个返回值返回的就是一个 promise,虽然你执行了 cancel 方法,也只是在整个 PromiseChain 中的 dispatchRequest 方法中执行了 throwIfCancellationRequested,这个完全不会影响 request 方法的返回值
 

0
4
hy_wang
非常感谢!
2020-11-22
共4条回复

hy_wang

提问者

2020-11-22

//img.mukewang.com/szimg/5fb9493309488f8b10840296.jpg

//img.mukewang.com/szimg/5fb949340964b40a09960850.jpg

我觉得这样和老师axios.request一样的效果,为什么表现结果不同。我比较疑惑,axios.request也是在promise中进行了throw为什么不会直接抛出异常而是进入了catch。


0
1
ustbhuangyi
你为啥要在内部加 setTimeout
2020-11-22
共1条回复

下一代前端开发语言 TypeScript从零重构axios

课程从零开始重构功能完整的JS库,是学习造轮子的不二之选!

2629 学习 · 877 问题

查看课程