Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript setInterval在指定时间后不调用函数_Javascript_Setinterval - Fatal编程技术网

Javascript setInterval在指定时间后不调用函数

Javascript setInterval在指定时间后不调用函数,javascript,setinterval,Javascript,Setinterval,在一个JS函数中,我调用另一个,。。我想每30秒打一次电话 function showPopup() { $.get("/Feedback.aspx", function (data) { if (post_HasError(data)) return; initPopup("popup-common", "feedback", data); }); setInterval(AddFormToSession(3),

在一个JS函数中,我调用另一个,。。我想每30秒打一次电话

function showPopup() {
    $.get("/Feedback.aspx", function (data) {
        if (post_HasError(data))
            return;
        initPopup("popup-common", "feedback", data);
    });
    setInterval(AddFormToSession(3), 30000);
}
function AddFormToSession(form) {
    alert(1);
  var url1 = form == 3 ? "Feedback.aspx/AddFormToSession" : "Request.aspx/AddFormToSession";
    $.ajax
    ({
         type: "POST",
         async: true,
         url: url1,
         data: "{'funcParam':'" + $('#aspnetForm').serialize() + "'}",
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         success: function(msg)
         {
             console.log(msg.d);
         }
     });
  }

仅在第一次调用时调用

setInterval接受函数名,即AddFormToSession。您提供的是函数调用的返回值。

您没有在setInterval的第一个参数中调用函数。调用函数返回该函数的值,而不是对该函数的引用。在您的情况下,它返回undefined

您只需传递函数的引用。您可以使用匿名函数,然后从那里调用

setInterval(function () {
 AddFormToSession(3);
}, 30000);
从评论中:

传递的是函数对象,而不是引用 作为第一个参数的函数调用如果返回函数就可以了。
setIntervalAddFormToSession3,…-立即调用回调函数并将其用作参数;是的,这是一个重复的、位于函数外部的位置。Nit:传递的是函数对象,而不是referenceWell,第一个参数的值设置为对函数对象的引用。如果函数调用返回一个函数,作为第一个参数是可以的:setTimeoutfunction{return function{…},0.:-