Javascript在循环上设置超时

时间:2014-05-23 13:32:19

标签: javascript for-loop settimeout

我有一个从Web Sql读取数据并将其发送到Web服务以将数据插入SQL Server的函数。如果不是Web服务处理所有信息需要大约40秒的事实,那么所有这些都将是好的和简单的。 我已经设置了将数据发送到Web服务的超时但它似乎没有工作....当我在表中有多行时它只发送第一行并跳过其余的行,所以这意味着超时不起作用。 任何帮助表示赞赏。

        db2.transaction(function (tx) {
        tx.executeSql('SELECT * FROM offlineCabinDefects', [], function (tx, results) {
            var len = results.rows.length, i;
            for (i = 0; i < len; i++) {

                var airline = results.rows.item(i).Airline;
                var tail = results.rows.item(i).Tail;
                var fn = results.rows.item(i).FlightNumber;
                var ad = results.rows.item(i).ActionDate;
                var ca = results.rows.item(i).CabinArea;
                var ci = results.rows.item(i).CabinItem;
                var uf = results.rows.item(i).UnserviceableFlag;
                var rn = results.rows.item(i).RowNumber;
                var sn = results.rows.item(i).SeatNumber;
                var dscr = results.rows.item(i).Description;
                var r = results.rows.item(i).Revision;
                var user = results.rows.item(i).UserName;
                var pass = results.rows.item(i).Password;

                data2 = "{'Airline':'" + airline +
                            "','Tail':'" + tail +
                            "','FlightNumber':'" + fn +
                            "','ActionDate':'" + ad +
                            "','CabinArea':'" + ca +
                            "','CabinItem':'" + ci +
                            "','UnserviceableFlag':'" + uf +
                            "','RowNumber':'" + rn +
                            "','SeatNumber':'" + sn +
                            "','Description':'" + dscr +
                            "','Revision':'" + r +
                            "','UserName':'" + user +
                            "','Password':'" + pass + "'}";


                 setTimeout(sendWS(data2), 50000);
            }
            dropTable2();
            document.getElementById("offlineresult").innerHTML = ('');
            document.getElementById("offlinetbl").innerHTML = ('');
        });
    });
}

1 个答案:

答案 0 :(得分:0)

超时内的功能正在立即执行!如果您正在传递参数,请将其包装在匿名函数中,否则将立即执行!

setTimeout(function() {
    sendWS(data2)
}, 50000);