vue axios异步请求及回调函数(前台)
- 问题
前台逻辑遇到以下情景
tempList(){
var temp;
//1执行ajax 取得值 temp中放数据this.$axios.post(http://localhos:8080, params).then((res) => {
if (res.data.retCode == '1') {
//执行操作
}
else {
//提示错误
}
});
2判断 temp值 做操作
}
执行时会出现temp值为undefined的问题,原因是ajax为异步请求,第二部不会等待第一步完成在执行,当执行第2步时ajax请求并未完成,temp并没有被赋值造成的。
- 解决方法
tempList(){ var temp; //1执行ajax 取得值 temp中放数据this.$axios.post(http://localhos:8080, params).then((res) => { if (res.data.retCode == '1') { //执行操作
2判断 temp值 做操作 //重点
}
else {
//提示错误
}
});
}
- 延伸
js代码会从上到下执行,但是当遇到异步的情况,如ajax请求时,并不会等到拿到请求结果在做以后的操作,如果这是需要用到请求结果,则会出现错误,一般采用回调函数的方式解决。将需要请求数据的方法放在ajax请求的回调函数中,待请求执行完成再做操作。