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

asyncjquery 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 に答える