天来,我一直在尝试找到一种在我的代码中使用 JQuery 延迟方法的方法,但不幸的是我从未找到解决方案。
我有 2 个函数。第一个init_items
发送第一个 ajax 请求以获取项目列表,然后循环使用这些项目名称向其他请求发送以获取有关项目的详细信息。因此,在此函数中,我希望在第一个请求完成后,启动以下请求。
单击时调用的第二个函数中,我希望系统在获取数据之前等待第一个功能完全完成(所有请求都已完成)。
function init_items(id) {
$.when(
$.ajax({
async: false,
data: { type : type, name : domain },
type: 'GET',
url: 'select_items.php'
}).done( function (data) {
var promises=[];
$.each( JSON.parse(data), function(k,v) {
var code = v.code;
getCurrentItem(code);
var req = $.get("get_groups.php", { id: id }).done(function(data1) {
res = JSON.parse(data1);
global_news[domain] = res;
promises.push( req );
});
return $.when.apply(null, promises).done(function(){
console.log('done 1');
});
});
}
$("button[name='refresh_value']").on("click", function() {
var id = $("select[name='id']").val();
$.when(init_items(id)).done(function(n){
console.log(n.num);
console.log('all set');
});
});
目前单击按钮,功能init_items
启动,但它不会等待结果显示信息。
我读过很多案例,推迟,承诺,什么时候,但我还没有解决这个问题。
有人有想法吗?我真的很感激你的帮助。
最好
山 姆
谢谢大家。我已经找到了解决方案。我将函数分为两个函数。当第一个完成请求时,它会调用第二个请求,后者启动其在 promise 中声明的请求。