需求
在提交时判断名称是否重复
问题
JS函数执行顺序错乱问题
代码
let url = carpath + "请求地址";
let flag = true;
// 调用url方法判断名称是否重复
$.get(url, {"name":name}, function (data) {
alert("请求操作");
if (data.obj == false) {
flag = false;
}
}, 'JSON');
alert(flag)
if(!flag){
alert("名称重复!");
flag = true; // 提示后重置flag
return;
}
代码执行后发现先执行的flag,后执行请求操作
这样导致了flag一直等于true
问题原因
因为js是异步执行的,在执行过程中 if(!flag) 比 ajax请求 要快,所以先执行if(!flag){} 后执行ajax请求
解决方案
将方法设为同步处理
function save(){
// 添加 ajax 同步, 在ajax完成后在执行后续操作
$.ajaxSetup({
async: false
});
// 你的业务
}
错误触发场景
1. JS/jquery方法中执行顺序错乱
2. ajax同步/异步
3. JS/jquery方法判断条件执行顺序错乱