问题

今天在写Vue时,发现有一个axios请求发送失败,因为它所需要的参数是undefined的。该参数id来自于另一个axios请求。
讲道理,我在created钩子中按照如下图所示写好代码。
在这里插入图片描述
方法getStudentInfo( )执行后会初始化当前的studentInfo对象,然后getVerify( )以该对象中的sid为参数继续发送请求,从而初始化verify对象。目前的情况是verify对象始终为空,后经验证发现sid值是undefined的,导致请求发送失败。

原因

在钩子函数created中,多个axios请求的顺序并不是依照代码编写的顺序执行的。因为axios发送异步请求,所以每个请求接收到反馈的时间总不相同。事实证明,getVerify( )请求获取在getStudentInfo( )请求尚未执行完毕时就开始执行了,这小伙子急了啊!

解决方法

使用then函数处理,也可以将一个axios请求嵌套在另一个请求的处理操作中。
我在这里使用的是watch监听,当sid值发生改变时,再调用第二个请求方法。注意要设置参数immediate为true,以保证第一次改变就调用。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐