在javascript中使用asynchronouscallback模式的无限循环

假设我想发送一个asynchronousAJAX请求到服务器,当它响应发送另一个请求,并永远重复:

function sendXHR(url, callback) { // Send XMLHttpRequest to server and call callback when response is received } function infinite() { sendXHR('url/path', infinite); } infinite(); 

我假设在这里我们会很快耗尽堆栈空间,所以我怎样才能做到这一点(没有阻塞)?

传递callback而不是使用return的模式在node.js特别stream行。 人们如何创造无限循环? 我不相信大多数JS引擎做任何forms的尾部呼叫优化。

如果你的ajax调用是asynchronous的,你不会用完栈空间,因为sendXHR()在发送ajax请求之后立即返回。 然后在ajax响应到达的时候稍后调用callback函数。 没有build立堆栈。


如果您的ajax调用是同步的,并且您希望允许其他事件以及在JavaScript环境中不发生什么,那么您可以这样:

 function sendXHR(url, callback) { // Send XMLHttpRequest to server and call callback when response is received } function infinite() { sendXHR('url/path'); setTimeout(infinite, 1); } infinite();