关于axios的问题

来源:2-3 幻灯片组件--从服务器端获取数据

花生香又脆

2020-04-28 18:51:33

老师你好,

1. then这里是成功后执行的回调函数,catch这里是失败后执行的回调函数。老师为什么在成功的回调里,还要判断成功码(succ_code)?在失败的回调里,也还要判断有没有reason?不判断也能正常运行啊。

2. 成功的回调里,为什么要手动抛出错误(throw new Error)?不是在下面的catch就能捕获错误信息了吗?

3. 手动抛出的错误(throw new Error),控制台上没有输出,怎么输出这个错误信息?

下图注销掉的绿色字体是老师视频中写的代码。

http://img.mukewang.com/climg/5ea80529093d27cb08250649.jpg

写回答

1回答

好帮手慕夭夭

2020-04-28

同学你好,问题解答如下:

1.执行then只是说接口请求成功了,但是可能由于某一种情况,后端返回的数据不一定是我们想要的。打一个比方,如果我们想要返回的数据,succ_code为0。可是没有权限访问一些数据,虽然接口请求成功了,但是后端判断我们无权限没有把真正的数据返回给我们 ,返回了一些其他内容。那此时的succ_code可能是1 ,所以需要判断一下。具体返回什么内容看后端怎么规定,同学了解一下即可。

2.reason接收错误信息,错误信息的内容是有很多的。可能是null,也可能是其他内容等。例如null的时候我们不想要输出,就可以通过if判断。当然了,案例中也可以不判断。因为老师在上面的then已经手动抛出了一个错误信息。可能老师自己习惯性写了一个判断。

http://img.mukewang.com/climg/5ea820ab0922383803370225.jpg

3.这又回到了第一个回复,因为接口请求成功了,但是返回的数据不一定是正确的。此时就可以手动抛出错误了。

http://img.mukewang.com/climg/5ea82161096be01906040168.jpg

4.因为咱们请求的接口,返回的数据是正确的,符合if判断。执行return, return之后的代码就不会再执行了,所以没有抛出错误。但是想要不执行if判断,就得后端返回不一样的数据了,这个我们无法测试。但是你想要输出,可以把return去掉,这样不管返回的数据对不对,都让它执行后面的throw new Error('没有成功获取到数据!');

http://img.mukewang.com/climg/5ea8239709cff10306020098.jpg

http://img.mukewang.com/climg/5ea8238c09816e7603210072.jpg

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

0

0 学习 · 10739 问题

查看课程

相似问题