vue在一个组件内多次异步请求,结果相互覆盖?
在vue的项目中,我在一个组件的created()
内使用axios异步请求了两个接口,结果很奇怪的但是,返回的两个结果存在相互覆盖的情况,只有很少几次能正确接收到正确的返回结果。
在网上查了一下,看到说可以使用axios的all()
方法,或者是用Promise。但..... 结果还是出现了相互覆盖的情况。
代码入下:
created () {
this.initData();
},
methods: {
initData () {
this.$http.all([
this.$http.get('/api/test1'),
this.$http.get('/api/test2', {
params: { id: 123 }
})
]).then(this.$http.spread((res1, res2) => {
console.log(res1)
console.log(res2)
}));
}
}
还有用Promise的方法也试过了:
methods: {
initData () {
Promise.all([
this.$http.get('/api/test1'),
this.$http.get('/api/test2', {
params: { id: 123 }
})
]).then(([res1, res2]) => {
console.log(res1)
console.log(res2)
});
}
}
返回结果:两个接口返回的数据应该是,一个长度为2的数组,一个长度为1的数组
结果收到的是这样的
这是相关版本
main.js里axios的调用
不知道怎么解决,还是我哪个地方写的有问题,求助各位大佬。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你这个写的没感觉啥问题,是接口数据的问题吧
两个结果异步,冲突了。
注意后面的axios.spread