- 問題
前台邏輯遇到以下情景
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請求的回調函數中,待請求執行完成再做操作。