【问题标题】:Unexpected behavior with "SetInterval" in JavaScriptJavaScript 中“SetInterval”的意外行为
【发布时间】:2017-12-03 01:33:25
【问题描述】:

我有一个向 servlet 发出请求的 JavaScript。该请求有效,但我无法让它以 1 秒的指定时间间隔重复。我究竟做错了什么?

我对前端开发和 JavaScript 还很陌生。

$(document).ready(function() {
        $('#userName').blur(function(event) {
                var name = $('#userName').val();
                setInterval($.get('JqueryServlet', {
                        userName : name
                }, function(responseText) {
                        $('#ajaxResponse').text(responseText);}), 1000);
        });
});

【问题讨论】:

标签: javascript jquery ajax jsp servlets


【解决方案1】:

setInterval 工作 with the arguments setInterval(callbackFunction, timingInMilliseconds)

您似乎是直接在callbackFunction 参数中调用$.get。不幸的是,这不起作用,因为您对 $.get 的调用是作为参数传递的,而不是函数本身。即使您确实传递了该函数,也不会使用正确的参数调用它。

而是将其包装在匿名函数调用中或将其放入函数中,如下所示:

function getServlet() {
  // code
}
setInterval(getServlet, 1000); // to go off every 1 second

或者:

setInterval(function() {
  // code
}, 1000);

如果你坚持直接在setInterval 中使用$.get,你可以使用类似:

 setInterval(function(a,b,c){

      console.log(a + b +c);  

  }, 500, "a", "b", "c");

在大多数浏览器中(参见上面的链接),您可以使用setInterval 调用:

setInteval(callbackFunction, timingInMilliSeconds, callbackArg, callbackArg, ...);

【讨论】:

    【解决方案2】:

    任何你想做的事,放在下面这个块里面:

    setInterval(function(){ 
       alert("I will be called in 3 second and again after 3 seconds");
    }, 3000);
    

    现在试试这个:

    $(document).ready(function() {
        $('#userName').blur(function(event) {
                var name = $('#userName').val();
                setInterval(function(){ 
                    $.get('JqueryServlet', {
                        userName : name
                    }, function(responseText) {
                        $('#ajaxResponse').text(responseText);
                    });  
                }, 1000);
        });
    });
    

    【讨论】:

      【解决方案3】:

      在任何模糊事件上,您创建一个新的间隔实例,它们保留在内存中并可能导致冲突,创建一个全局间隔引用对象并设置对它的间隔引用,并在开始新间隔之前处理旧间隔。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多