Javascript在循环上设置超时

Javascript set timeout on a loop

本文关键字:设置 超时 循环 Javascript      更新时间:2023-09-26

我有一个从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 = ('');
        });
    });
}

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

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