使用javascript连续进行极化 - 这种方式可行

时间:2014-06-28 19:01:53

标签: javascript ajax http

我希望能够设置连续的poling,以便在可用时立即检测到更新。

我有这个javascript函数。

        function getMessage() {
                var request = new XMLHttpRequest();
                request.open("GET", "@routes.Application.receive()");
                request.onreadystatechange = function () {
                        if (request.readyState === XMLHttpRequest.DONE &&
                            request.status === 200) {
                                displayMessage(request.responseText);
                                getMessage()
                        }
                };
  1. 这个系统会工作还是会产生某种堆栈溢出错误,因为对于每条消息它都会执行递归调用。有什么建议可以改善吗?有没有更好的惯用方法呢?
  2. 如何设置超时?什么是默认超时?如何检测超时何时发生?
  3. 非常感谢

    PS我根据我在SO上阅读的内容制作了这个功能。有一个函数似乎处理像超时这样的事情,但它使用的是JQuery。我不熟悉它,并想知道是否可以在纯JS中完成相同的工作。

1 个答案:

答案 0 :(得分:0)

这应该没问题,但最好用getMessage()替换setTimeout(getMessage, 500)以避免充斥服务器。