Zoeken…


Invoering

jQuery-beloften zijn een slimme manier om asynchrone bewerkingen op een bouwsteen manier aan elkaar te koppelen. Dit vervangt old-school nesting van callbacks, die niet zo gemakkelijk worden gereorganiseerd.

Basisbelofte creatie

Hier is een heel eenvoudig voorbeeld van een functie die " belooft door te gaan wanneer een bepaalde tijd verstrijkt". Het doet dat door een nieuw Deferred object te maken, dat later wordt opgelost en de belofte van de uitgestelde terugkeer teruggeeft:

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();
}

En gebruik als volgt:

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

Asynchrone beloftes Chaining

Als u meerdere asynchrone taken hebt die achter elkaar moeten worden uitgevoerd, moet u hun belofteobjecten aan elkaar koppelen. Hier is een eenvoudig voorbeeld:

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 () succes, fout VS .done (), .fail ()

success and Error: een succes- callback die wordt opgeroepen na succesvolle afronding van een Ajax-aanvraag.

Een mislukte callback die wordt opgeroepen voor het geval er een fout optreedt tijdens het indienen van het verzoek.

Voorbeeld:

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

.done () en .fail ():

.ajax (). done (functie (data, textStatus, jqXHR) {}); Vervangt methode .success () die in jQuery 1.8 is verouderd. Dit is een alternatieve constructie voor de succesvolle callback-functie hierboven.

.ajax (). fail (functie (jqXHR, textStatus, errorThrown) {}); Vervangt methode .error () die in jQuery 1.8 is verouderd. Dit is een alternatieve constructie voor de volledige callback-functie hierboven.

Voorbeeld:

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

Ontvang de huidige status van een belofte

Standaard is de status van een belofte in behandeling wanneer deze wordt gemaakt. De status van een belofte wordt gewijzigd wanneer het uitgestelde object dat de belofte heeft gemaakt deze oplost / afwijst.

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow