包含AJAX的jQuery .each - 等到下一次迭代

时间:2018-03-12 15:04:41

标签: javascript jquery ajax deferred

我有一个jQuery .each语句循环通过一组accordion / panels

$("div.section-data-source").each(function () {
    populateAccordion($(this));
});

对于每个元素,我调用一个函数(populateAccordion),该函数具有AJAX查询,并且具有自己的done()回调。

如何让我的每个函数等到populateAccordion()函数完成后再继续下一次迭代?我可以延迟对函数本身 - 或者是否有一种方法让函数告诉每个函数迭代?

function populateAccordion(el) {

    var apiName = el.attr("data-source-api-name");

    $.ajax({
        type: 'GET',
        url: api_URL + apiName + "/" + id,
        contentType: "application/json; charset=utf-8",
        dataType: "json"
    }).done(function(data) {

        el.parent().find('.data-field').map(function () {
            apiDataField = $(this).attr("data-field");
            var itemValue = getApiDataValue(data, apiDataField, "Date");
            $(this).text(itemValue);
        });
    });
    console.log("FINISHED POPULATE");
};

0 个答案:

没有答案