SORU
14 EYLÜL 2010, Salı


Tüm jQuery Ajax istekleri yapılır kadar beklemek?

Nasıl jQuery Ajax istekleri başka bir işlev içinde bir işlev yapılır kadar beklemek zorunda mıyım?

Kısacası, tüm Ajax istekleri için beklemek bu sırada ben yürütmeden önce yapılması gerekiyor. Ama nasıl?

CEVAP
25 Mart 2012, Pazar


Aslında, DV şimdi bir 'zaman' bu amaç için bir fonksiyon tanımlar.

http://api.jquery.com/jQuery.when/

Bağımsız değişken olarak Ertelenmiş nesneleri herhangi bir sayı kabul eder, ve onları çözmek zaman bir işlev yürütür.

Bu, eğer (örneğin) dört ajax istekleri başlatmak, işleri bittiğinde bir eylem gerçekleştirmek istiyorsanız, bu gibi bir şey yapabilirsin

$.when(ajax1(), ajax2(), ajax3(), ajax4()).done(function(a1, a2, a3, a4){
    // the code here will be executed when all four ajax requests resolve.
    // a1, a2, a3 and a4 are lists of length 3 containing the response text,
    // status, and jqXHR object for each of the four ajax calls respectively.
});

function ajax1() {
    // NOTE:  This function must return the value 
    //        from calling the $.ajax() method.
    return $.ajax({
        url: "someUrl",
        dataType: "json",
        data:  yourJsonData,            
        ...
    });
}

Benim görüşüme göre, temiz ve net bir sözdizimi için yapar, ve sayfa geliştikçe istenmeyen yan etkileri olabilir ajaxStart ve ajaxStop, gibi herhangi bir global değişkenler ilgili önler.

Bunu bilmiyorsan önceden kaç ajax ihtiyacın beklemek için (örneğin kullanmak istediğiniz bir değişken sayıda bağımsız değişken), hala yapılabilir ama biraz yanıltıcıdır. Pass in an array of Deferreds to $.when() (ve belki de jQuery .when troubleshooting with variable number of arguments).

Eğer ajax komut başarısızlık modları üzerinde daha derin kontrol vs. ihtiyacın olursa nesne tarafından döndürülen kaydedebilirsiniz .() - Promise nesne orijinal ajax tüm sorgular kapsayan. bir jQuery var Arayabilirsiniz .() o zaman ya .() başarısız ayrıntılı başarı/başarısızlık işleyicileri eklemek için.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • boniver

    boniver

    17 NİSAN 2006
  • DJAndrewRyan

    DJAndrewRyan

    22 Ocak 2007
  • LiveForGodsKingdom

    LiveForGodsK

    6 NİSAN 2008