Javascript延迟了3个单独的操作

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

我有一个非常困难的时间让这个脚本在同步运行

我想完成的是: 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/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");
});