在xmlHttpRequest提交中暂停10秒

时间:2011-12-26 00:08:09

标签: javascript ajax xmlhttprequest

这个javascript代码相当冗长,但最重要的部分是它发布的结尾:

 httpwp['send'](paramswp);

我试过没有成功,每次发送之间暂停10秒。通常它会立即发送它们。

完整代码http://pastebin.com/cEM7zksn

2 个答案:

答案 0 :(得分:1)

要在拨打此电话前延迟10秒,您可以使用setTimeout

setTimeout(function() { httpwp['send'](paramswp); }, 10000);

或更简单:

setTimeout(function() { httpwp.send(paramswp); }, 10000);

答案 1 :(得分:1)

setTimeout()函数不会在指定时间内暂停执行,它会在指定时间后对要执行的函数进行排队。 setTimeout()之后的代码行将立即执行。因此,如果您有以下代码:

1 someFunction();
2 setTimeout(function(){console.log("From timeout");}, 10000);
3 console.log("After setTimeout()");

将在第1行调用someFunction(),然后在第2行将匿名函数排队等待在10秒内执行,然后第3行将执行,记录“在setTimeout()之后”,最后10秒钟后,匿名函数将执行“从超时时间”的记录。

如果你想编码一个循环,每个迭代间隔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成功回调中设置后续超时。