0

我有一个有数百行的 JS 函数。我需要确保在完成上一次调用之前不会再次调用该函数。

所以我尝试了这个:

var executing = false;    
function myFunc(){
   //stop executing if it's already executing
   if(executing){
      return false;
   }
   executing = true;
   /* the main function with ajax-calls etc */
   $.ajax({
      type: "POST",
      url: "/"+method+action,
      data: "a=1",
      success: function(data){
         //the inner function logic...
         executing = false;
      }
}

这在你看来是假的吗?我的缺点在哪里?如果您认为这是有道理的,那么错误可能在未发布的代码中的其他地方。感谢您的反馈意见!

4

1 回答 1

0

尝试async为 jquery ajax添加选项并将其设置为 false 以发出同步请求:

$.ajax({
      type: "POST",
      async :false,
      url: "/"+method+action,
      data: {a:1},
      success: function(data){
         //the inner function logic...
         executing = false;
      }
于 2013-05-30T23:16:52.823 回答