Javascript延迟了3个单独的操作
我有一个非常困难的时间让这个脚本在同步运行 我想完成的是: 1.启动迭代URL数组的每个循环 2.在Get请求中使用值,将url的html加载到新变量中(同一个域,这部分工作正常)。 3.将该变量(url中的html)作为.html(var)放入div中; 4.循环中的下一个 5.循环完成时console.log(“完成” 这是我的密码:Javascript延迟了3个单独的操作,javascript,each,deferred,Javascript,Each,Deferred,我有一个非常困难的时间让这个脚本在同步运行 我想完成的是: 1.启动迭代URL数组的每个循环 2.在Get请求中使用值,将url的html加载到新变量中(同一个域,这部分工作正常)。 3.将该变量(url中的html)作为.html(var)放入div中; 4.循环中的下一个 5.循环完成时console.log(“完成” 这是我的密码: var deferreds = [], ids = ['/node/add/1000-books','/node/add/3d','/node/add
var deferreds = [],
ids = ['/node/add/1000-books','/node/add/3d','/node/add/merci-staff-rooms','/node/add/about','/node/add/attend','/node/add/banner','/node/add/blogs-ahml','/node/add/book'],
users = [];
$.each(ids, function(i,v){
deferreds.push(
$.get("http://www.ahml.info"+v, function( data ) {
$(".tohere").append(data);
console.log("Loaded "+v);
});
);
});
$.when($, deferreds).done(function(){
console.log("Should be end");
});
})
$.when会在所有console.log完成后触发,因此我知道一些scyncronistity正在这里工作,但脚本仍在追加
如何进行修改,以便在.get请求完成之前,$.when不会触发
我已经试过了
var newdeff = $.Deferred();
&
在每个功能范围内,但均无效
谢谢您的语法错误,应该是
$.when.apply($, deferreds).done(function(){
console.log("Should be end");
});
您需要使用apply()
来传递一个承诺数组,否则当您将非异步的jQuery
传递到$时,它会立即解析
$.when.apply($, deferreds).done(function(){
console.log("Should be end");
});