在setTimeout中调用相同的函数

Aji*_*sal 0 javascript settimeout

我有一个执行ajax GET请求的函数,它返回成功或错误响应.在成功响应中,我再次调用相同的功能,但在2秒后.为此,我有以下代码.

function check_something()
  $.ajax({
    type: 'GET',
    url: '/something',
    success: function(data){
      setTimeout(check_something(),2000);
    },
    error: function(response) {
      if(response.status == 401){
        //do something else
      }
    }
  });
};


$(function(){
   check_something();
});
Run Code Online (Sandbox Code Playgroud)

但是从网络控制台日志和服务器日志看起来,"/ something"的请求速度超过2秒.我看到请求在10或12毫秒后传入.

一段代码有什么问题?

Mar*_*rts 6

您正在调用该函数并将结果作为第一个参数setTimeout传递给,而不是传递对该函数的引用.正确的语法是:

setTimeout(check_something, 2000);
Run Code Online (Sandbox Code Playgroud)