खोज…


परिचय

jQuery के वादे बिल्डिंग-ब्लॉक तरीके से अतुल्यकालिक संचालन को एक साथ चलाने का एक चतुर तरीका है। यह कॉलबैक के पुराने स्कूल के घोंसले का स्थान लेता है, जो इतनी आसानी से पुनर्गठित नहीं होते हैं।

बुनियादी वादा निर्माण

यहाँ एक फ़ंक्शन का एक बहुत ही सरल उदाहरण है कि "एक निश्चित समय बीत जाने पर आगे बढ़ने का वादा करता है"। ऐसा लगता है कि एक नई Deferred वस्तु बनाने से, जो बाद में हल हो गई है और आस्थगित वादा वापस कर रहा है:

function waitPromise(milliseconds){

   // Create a new Deferred object using the jQuery static method
   var def = $.Deferred();

   // Do some asynchronous work - in this case a simple timer 
   setTimeout(function(){

       // Work completed... resolve the deferred, so it's promise will proceed
       def.resolve();
   }, milliseconds);

   // Immediately return a "promise to proceed when the wait time ends"
   return def.promise();
}

और इस तरह का उपयोग करें:

waitPromise(2000).then(function(){
     console.log("I have waited long enough");
});

एसिंक्रोनस शाइनिंग का वादा करता है

यदि आपके पास कई अतुल्यकालिक कार्य हैं जो एक के बाद एक होने की आवश्यकता है, तो आपको उनके वादे वस्तुओं को एक साथ श्रृंखला करने की आवश्यकता होगी। ये रहा एक सरल उदाहरण:

function First() {
    console.log("Calling Function First");
    return $.get("/ajax/GetFunction/First");
}

function Second() {
    console.log("Calling Function Second");
    return $.get("/ajax/GetFunction/Second");
}
 
function Third() {
    console.log("Calling Function Third");
    return $.get("/ajax/GetFunction/Third");
}

function log(results){
    console.log("Result from previous AJAX call: " + results.data);
}
 
First().done(log)
       .then(Second).done(log)
       .then(Third).done(log);

jQuery ajax () सफलता, त्रुटि VS .done (), .fail ()

सफलता और त्रुटि: एक सफलता कॉलबैक जो अजाक्स अनुरोध के सफल समापन पर आह्वान किया जाता है।

एक विफलता कॉलबैक जो अनुरोध करने के दौरान किसी भी त्रुटि के कारण हो जाता है।

उदाहरण:

 $.ajax({
        url: 'URL',
        type: 'POST',
        data: yourData,
        datatype: 'json',
        success: function (data) { successFunction(data); },
        error: function (jqXHR, textStatus, errorThrown) { errorFunction(); }
    });

.done () और .फेल ():

.ajax () किया। (फ़ंक्शन (डेटा, टेक्स्टस्टैटस, jqXHR) {}); रीप्लेस मेथड .success () जो jQuery 1.8 में अपदस्थ किया गया था। यह उपरोक्त कॉलबैक फ़ंक्शन के लिए एक वैकल्पिक निर्माण है।

.जेक्स ()। फेल (फ़ंक्शन (jqXHR, textStatus, errorThrown) {}); विधि .error () जो jQuery 1.8 में पदावनत किया गया था। यह पूरी कॉलबैक फ़ंक्शन के लिए एक वैकल्पिक निर्माण है।

उदाहरण:

$.ajax({
    url: 'URL',
    type: 'POST',
    data: yourData,
    datatype: 'json'
})
.done(function (data) { successFunction(data); })
.fail(function (jqXHR, textStatus, errorThrown) { serrorFunction(); });

एक वादे की वर्तमान स्थिति प्राप्त करें

डिफ़ॉल्ट रूप से किसी वादे की स्थिति लंबित होने पर बनाई जाती है। किसी वादे की स्थिति को तब बदल दिया जाता है जब आस्थगित वस्तु जिसने वादा किया था या तो उसे हल करता है / अस्वीकार करता है।

var deferred = new $.Deferred();
var d1= deferred.promise({
    prop: "value"
});
var d2= $("div").promise();
var d3= $("div").hide(1000).promise();

console.log(d1.state()); // "pending"
console.log(d2.state()); // "resolved"
console.log(d3.state()); // "pending"


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow