setTimeout()无效

时间:2015-07-03 03:27:33

标签: javascript

我有一个愚蠢的页面,其中链接将触发长时间运行任务的POST请求。因此页面必须轮询另一个端点的状态。这是实际的代码:

<script type=text/javascript>
  function check_status(id) {
    alert(id)
  }

  $(function() {
    $("a#save_preview").bind('click', function() {
      $.post($SCRIPT_ROOT + "/api/v1.0/creatives/" +
        $("img#preview").attr("creative_id"),
          {}, function(data, status) {
            alert(status);
            setTimeout(check_status(100), 8000);
        }, "json");
    });

  });

因此,应在POST请求成功后8秒调用存根检查状态。但是,每当我运行此代码时,都会在之后调用它。我做错了什么?

3 个答案:

答案 0 :(得分:3)

如果您需要支持string strRev = string.Join("", str.Reverse()).Replace('<', '>'); 以下的Internet Explorer 10,则行setTimeout(check_status(100), 8000);应该是setTimeout(check_status, 8000, 100);或者可能使用匿名函数。

答案 1 :(得分:1)

您必须向setTimeout方法提供回调函数,但不是提供它,而是直接调用它check_status(100),因此在超时后实际上没有调用任何内容。你可以这样改变:

setTimeout(function() {
    check_status(100)
}, 8000);

答案 2 :(得分:0)

尝试在setTimeout中设置一个函数 以下代码适用于您的情况

<script type=text/javascript>
  function check_status(id) {
    alert(id)
  }

  $(function() {
    $("a#save_preview").bind('click', function() {
      $.post($SCRIPT_ROOT + "/api/v1.0/creatives/" +
        $("img#preview").attr("creative_id"),
          {}, function(data, status) {
            alert(status);
            setTimeout(function(){check_status(100);}, 8000);
        }, "json");
    });

  });