触发for循环中特定计数的函数

时间:2015-06-18 07:55:24

标签: javascript jquery cordova

我在循环中运行sql查询。只有当循环计数等于500时,查询才会运行。

表示E,g

$.ajax({

    response:function(e){

    // Here e.length will be unknown

    for(var i in e){

        if(q1cnt <= 500){
            // do some appending 
            var k = k + 1 ;
            if(q1cnt == 500){
                tx.executeSql(k);           
            }
        }

    }


    }
})

在上面的例子中我想要执行一个sql操作,如果计数达到500,我的问题是,如果前两个500的响应长度是1344,那就没关系,但我怎么能调用tx.executeSql(k);在433项结束时。

2 个答案:

答案 0 :(得分:0)

我仍然感到困惑,为什么可能需要从JS为每个第500个对象执行SQL查询。但是,我可能知道如何实现这一目标。

看起来你正在使它变得复杂,而它可以在没有额外的计数器,旗帜等的情况下解决。

这是通过Ajax请求获取值的循环 然后,它为每第500个数据项和最后一个数据项执行tx.executeSql

$.ajax({
    response: function(e)
    {
        for (var i = 0; i < e.length; i++)
        {
            if (i % 500 === 0 || i === e.length - 1)
            {
                tx.executeSql(i);           
            }
        }
    }
});

您提供了一个非常奇怪的Ajax调用代码部分。如果它是'不同'的AJAX,那就没关系。但是,谈到jQuery AJAX,语法应如下:

$.ajax({
    // options
}).done(function(e)
    {
        for (var i = 0; i < e.length; i++)
        {
            if (i % 500 === 0 || i === e.length - 1)
            {
                tx.executeSql(i);           
            }
        }
    }
});

答案 1 :(得分:0)

注意:我不知道您所提供的对象中response属性是什么$.ajax;它是not in the standard options。但我认为你使用它是有原因的,也许是一些插件。如果没有,请在下面将response更改为success

你已经说e.length将是“未知的”。我假设你的意思是“未知”,而不是undefined,而e实际上是一个数组。如果那是真的:

$.ajax({

    response:function(e){
        var i;

        // Here e.length will be unknown

        for (i = 0; i < e.length; ++i) {
            if (i <= 500) {
                // do some appending
                if (i === 500) {
                    tx.executeSql(i);
                }
            }
        }
    }
});

如果为真而且e是非数组对象,则要注意通过ES5,对象属性没有已定义的顺序,所以{ {1}}可能会按照您不期望的顺序访问它们。 (In ES6, they will have an order.

有一点需要注意:

for-in