2017-05-31 9 views
0

私は2つの要求を持っています.1つは負荷イメージです(バックエンドサーバーは多くの時間を要します)。もう1つはajaxです。 私は次のようにしたい:しかし複数の非同期リクエストを処理するにはどうすればよいですか?

$.when(
    [do image load] 
    [do ajax] 
).then(
    alert('all complete') 
) 

$ .when、その後複数のAjaxリクエストのための使用、AJAXや画像読み込み

+1

* "しかし、$ .whenし、複数のAjaxのリクエストのために使用し、" * - 彼らはありませんよ*独占* Ajaxリクエストのために、彼らは約束(またはjQueryのDeferredのためです)。イメージが読み込まれ、その約束を '$ .when()'に渡すときに解決されるあなた自身の約束を作成することができます。 – nnnnnn

答えて

0
$.when(
    $.get("/ajax/", function(response) { 
    //process ajax 
    }), 
    $.get("/assets/image.png", function(image) { 
    // process image 
    }), 
).then(function() { 
    // All is ready now, so... 
    alert('all complete') 
}); 
+0

あなたの返事をありがとう、私はそれを試してみます – sknight

0

に対処する方法GauriのimgLoadプラグインをお勧めします。jQuery callback on image load (even when the image is cached)

/** 
* Trigger a callback when 'this' image is loaded: 
* @param {Function} callback 
*/ 
(function($){ 
    $.fn.imgLoad = function(callback) { 
     return this.each(function() { 
      if (callback) { 
       if (this.complete || /*for IE 10-*/ $(this).height() > 0) { 
        callback.apply(this); 
       } 
       else { 
        $(this).on('load', function(){ 
         callback.apply(this); 
        }); 
       } 
      } 
     }); 
    }; 
})(jQuery); 

使用法、

$('#img-if').imgLoad(function(){ 
    // inside the image complete callback 
    $.ajax({ 
     .... 
     success:function(response){ 
      // final code to be executed here 
     } 
    }) 
}); 
関連する問題