Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中ajax调用与函数的同步_Javascript_Jquery_Ajax - Fatal编程技术网

javascript中ajax调用与函数的同步

javascript中ajax调用与函数的同步,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在努力实现以下目标: $.getJSON('api/filterTemplate/dashboard', function (data) { $.map(data, function (rec, i) { $.get('commonCore/templates/' + rec.templateHtml, function (html) { filterTemplate = Handlebars.compile(html);

我正在努力实现以下目标:

$.getJSON('api/filterTemplate/dashboard', function (data) {

        $.map(data, function (rec, i) {
          $.get('commonCore/templates/' + rec.templateHtml, function (html) {
               filterTemplate = Handlebars.compile(html);

                replaceFilterTemplate(data[i].classids);// this functions appends html to div -data[i].classids 
            });
        });
});

但是由于AJAX的异步行为,html没有被附加到正确的div id中。有人能帮我写这段代码并给我一些建议吗。

使用承诺应该维持秩序(请参阅)


另外,我建议您将
FilterTemplates
传递给
replaceFilterTemplate
,而不是将其设置为全局/范围

什么意思它没有附加到正确的DIV,数据附加到什么元素,问题是什么?你的
map
中有
rec
i
向后,你可能应该使用
每个
替换filterTemplate
依赖于
filterTemplate
是全局的吗?如果是这样,那就是你的问题的一部分。如果不是,
filterTemplate
在哪里使用?显示
replaceFilterTemplate
@megawac的代码-单位为$。映射参数是相反的,索引是最后一个,但同意您使用$。相反,这里似乎没有任何映射。真的吗?jQuery循环太愚蠢了
$.getJSON('api/filterTemplate/dashboard', function (data) {
    var promises = [];
    $.each(data, function (i, rec) {
        promises.push($.get('commonCore/templates/' + rec.templateHtml));
    });
    $.when.apply(this, promises).then(function() { //after all requests complete
        $.each(arguments, function(i, html) {
            filterTemplate = Handlebars.compile(html);
            replaceFilterTemplate(data[i].classids);// this functions appends html to div -data[i].classids
        })
    })
});