jQuery 调用延迟函数无效
jQuery calling a Deferred function not working
从 checkSessionCount 调用 loadLevel1Categories,然后对所有 .alvl1 类 执行一些操作。我知道数据正在返回,正如我所看到的那样。 Defer 似乎不起作用。
我已经通过在 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
})
从 checkSessionCount 调用 loadLevel1Categories,然后对所有 .alvl1 类 执行一些操作。我知道数据正在返回,正如我所看到的那样。 Defer 似乎不起作用。
我已经通过在 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
})