出现问题
函数功能:访问数据库函数(判断数据是否为空),如果为空,则执行alert语句
function a(){
isNullEmpty(); //判断数据是否为空函数;含有异步
alert(“a”);
}
function isNullEmpty()
{
..
alert("b");
...
}
异步举例:
$.ajax({
type : "GET",
url : "**",data : {
id:**
},
success : function(data, textStatus) {
alert("b");
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
}
});
后面省略
此执行结果为a b,原因是访问数据库比较慢,其他部分先执行。
解决方法:
var dtd = $.Deferred();
var wait = function(dtd){
var tasks = function(){
isNullEmpty(dtd);
};
setTimeout(tasks,0);
return dtd;
};
$.when(wait(dtd))
.done(function(){ alert("b");})
.fail(function(){ alert("出错啦!"); });
function isNullEmpty()
{
.....//不为空
alert(b);
dtd.resolve(); // 改变Deferred对象的执行状态
}
参考资料:http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html(推荐)