请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请问老师这里为什么是promise

老师我有一个疑问

请问下老师https://img1.sycdn.imooc.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 00:16:34

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

0 回复 有任何疑惑可以回复我~
  • 提问者 hy_wang #1
    实际上如果执行到throw这段函数正常来说不应该函数停止执行吗,请问下老师之后的return xhr为什么还会执行?
    回复 有任何疑惑可以回复我~ 2020-11-22 00:18:23
  • ustbhuangyi 回复 提问者 hy_wang #2
    如果 throw 就会进 catch 里了啊,不会执行后续 xhr 逻辑了啊
    回复 有任何疑惑可以回复我~ 2020-11-22 00:38:30
  • 提问者 hy_wang 回复 ustbhuangyi #3
    老师我写了一个Demo,throw控制台不是直接就报错了吗。为什么还会进入Promise.catch。
    回复 有任何疑惑可以回复我~ 2020-11-22 01:06:30
提问者 hy_wang 2020-11-22 01:08:23

https://img1.sycdn.imooc.com//szimg/5fb9493309488f8b10840296.jpg

https://img1.sycdn.imooc.com//szimg/5fb949340964b40a09960850.jpg

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


0 回复 有任何疑惑可以回复我~
  • 你为啥要在内部加 setTimeout
    回复 有任何疑惑可以回复我~ 2020-11-22 11:10:13
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信