当js过长时需要封装成不同的小功能,发现在函数调用另一个包含ajax的函数时,返回值有问题,百度了一圈没找到答案,去了stackoverflow上找,答案有点复杂是这样的。
这是国外网友的问题,加了异步为否之后,返回值仍是undefined (重点在下面,没采用国外网友的答案)
答案是这样的
有人回答加callback函数,我觉得不好,这个在调用函数那比较麻烦.所以没有采用。
这里是重点:
研究了一下ajax的执行过程,看下我写的逻辑
function checkTime() {
var rs;
$.ajax({
type : "post",
url : "myURL.action",
async : false,
success : function(result){
if(result=="NO"){
rs = false;
}else {
rs = true;
}
}
});
return rs;
}
function A{
var flag = checkTime();
console.log("返回值" + flag);//打印出来看看是不是想要的值
if(!flag) {
return false;
}
}
这样就不会是undefined了,为什么这样写就行呢,因为ajax从后台返回后,执行了success函数,但如果不在最后写一个声明的return语句,即使在success函数写了return还是会执行ajax调用后面的无返回代码,这是执行顺序导致的。