关于axios的问题
来源:2-3 幻灯片组件--从服务器端获取数据
花生香又脆
2020-04-28 18:51:33
老师你好,
1. then这里是成功后执行的回调函数,catch这里是失败后执行的回调函数。老师为什么在成功的回调里,还要判断成功码(succ_code)?在失败的回调里,也还要判断有没有reason?不判断也能正常运行啊。
2. 成功的回调里,为什么要手动抛出错误(throw new Error)?不是在下面的catch就能捕获错误信息了吗?
3. 手动抛出的错误(throw new Error),控制台上没有输出,怎么输出这个错误信息?
下图注销掉的绿色字体是老师视频中写的代码。

1回答
同学你好,问题解答如下:
1.执行then只是说接口请求成功了,但是可能由于某一种情况,后端返回的数据不一定是我们想要的。打一个比方,如果我们想要返回的数据,succ_code为0。可是没有权限访问一些数据,虽然接口请求成功了,但是后端判断我们无权限没有把真正的数据返回给我们 ,返回了一些其他内容。那此时的succ_code可能是1 ,所以需要判断一下。具体返回什么内容看后端怎么规定,同学了解一下即可。
2.reason接收错误信息,错误信息的内容是有很多的。可能是null,也可能是其他内容等。例如null的时候我们不想要输出,就可以通过if判断。当然了,案例中也可以不判断。因为老师在上面的then已经手动抛出了一个错误信息。可能老师自己习惯性写了一个判断。

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

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


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