jQuery调用Deferred函数不起作用



checkSessionCount调用loadLevel1Categories,然后对所有.alvl1类执行某些操作。据我所见,我知道数据正在被返回。似乎延迟器不起作用。

我通过在loadLevel1Categories((之后放置setTimeout进行了测试;一切都是这样,但这很混乱,而且会返回不同数量的数据,因此无法预测要添加多少延迟。

$(function(){

var objCats = $('#portal_categories');

function loadLevel1Categories() {

objCats.empty();

var dfd = $.Deferred();

$.getJSON('getdata.php?ty=ca1&ts='+new Date(),function(){
//success
}).done(function(data){

var r = new Array, j = -1;
$.each(data,function(k,item) {

r[++j] = '<a href="#" class="alvl1" data-id="'+item.id+'">'+item.title+'</a>';

});

objCats.html(r.join(''));

dfd.resolve();

}).fail(function(){
objCats.html('Unable to locate any data');
}); 
return dfd.promise();
}

function checkSessionCount() {

$('#debug').empty();
loadLevel1Categories();

//do something with the .alvl1 elements once data is returned
//but this bit isn't working as the database hasn't been returned yet

}
//on page load
checkSessionCount();

});

您可以在上使用.then回调

loadLevel1Categories().then(()=>{
//do something with the .alvl1 elements once data is returned
})

最新更新