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
})
})
});