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

时间:2014-06-23 04:29:48

标签: javascript setinterval

在一个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);
         }
     });
  }

仅在第一次调用

2 个答案:

答案 0 :(得分:4)

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

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

setInterval(function () {
 AddFormToSession(3);
}, 30000);

来自评论:

  1. 传递函数对象,而不是“引用”
  2. 函数调用作为第一个参数,如果它返回一个函数就没问题。

答案 1 :(得分:0)

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