这段javascript代码相当长,但最重要的部分是它发布的结尾:
httpwp['send'](paramswp);
我试过在每次发送之间设置10秒的暂停,但没有成功。通常情况下,它会立即发送它们。
完整代码http://pastebin.com/cEM7zksn
要在调用此函数之前延迟10秒,您可以使用setTimeout
setTimeout(function() { httpwp['send'](paramswp); }, 10000);
或者更简单:
setTimeout(function() { httpwp.send(paramswp); }, 10000);
setTimeout()
函数不会在指定的时间内暂停执行,它会在指定的时间后将要执行的函数排队。 setTimeout()
后的行代码将立即执行。所以如果你有下面的代码:
1 someFunction();
2 setTimeout(function(){console.log("From timeout");}, 10000);
3 console.log("After setTimeout()");
将发生的是在第1行someFunction()
将被调用,然后在第2行一个匿名函数将在10秒时间内排队执行,然后第3行将执行,记录"setTimeout()之后",最后10秒后匿名函数将执行记录"From timeout"。
如果你想编写一个每次迭代间隔10秒的循环,而不是使用传统的for循环,你可以编写一个使用setTimeout()
调用自己的函数:
// this for loop won't work
for(var i = 0; i < 20; i++) {
// do something
// pause for 10 seconds ---- can't be done
}
// so instead you do something like this:
function timeoutLoop(i, max) {
if (i < max) {
// do something
i++;
setTimeout(function(){timeoutLoop(i, max);}, 10000);
}
}
timeoutLoop(0, 20);
我发现你的代码有点难读,所以我没有试图整合上面的,但这里是一个非常简单的演示上面的工作:http://jsfiddle.net/CrSEt/1/
或者这里有一个更简洁的版本,通过使用回调将实际处理与循环函数分开:http://jsfiddle.net/CrSEt/
我敢肯定,如果你稍微摆弄一下上面的代码,你就会看到如何让它在你的代码中工作。您可能需要考虑在ajax成功回调中设置后续超时。