什么是同步循环每个数据-XXX单元的最佳方法?

时间:2014-03-26 02:13:19

标签: javascript jquery

我有一个带有列的html表,每列都有一个数据属性,如<td data-XXX="####">,我想找到每个单元格(可以用

完成)
$table.find("[data-XXX]")

除非某人有更好的方法),请获取data-XXX属性的值,将其传递给AJAX查询,解析JSON结果,并将结果放在<td>中,并附带相关数据-XXX领域。也许是所有人最严格的要求......我希望所有这些都是同步完成的,以便同时最大限度地减少很多服务器请求...所以下一个AJAX调用不会被填充,直到上一个表格单元被填满。 / p>

所以...我的问题是具体的 - 同步循环每个数据-XXX单元的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

根据你的描述,我认为你希望ajax调用一个接一个地完成,所以下一个调用在前一个完成之前不会启动。 ajax调用它们本身仍然是异步的(因为它们应该)。你可以这样做:

function processData() {
    var items = $table.find("[data-XXX]");
    var cntr = 0;

    function next() {
        if (cntr < items.length) {
            var obj = items.eq(cntr);
            // do your ajax call with obj
            $.ajax(...).done(function(results) {
                // process results returned from ajax call
                // ...

                // now do the next iteration
                ++cntr;
                next();
            });
        }
    }
    // start first iteration
    next();
}

基本思想是你设置两个状态变量(你的jQuery对象包含要处理的对象列表和一个跟踪下一个要处理的索引变量)。然后,创建一个用于每次迭代的内部函数。在ajax调用的完成处理程序中,您递增计数器,然后开始下一次迭代。

答案 1 :(得分:0)

$table.find("data=XXX").each(function(){
   var tdEle = this;
});

结帐数据集: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dataset