jquery Deferred löst schnell das Problem asynchroner Rückrufe
function ok(name){ var dfd = new $.Deferred(); callback:func(){ return dfd.resolve( response ); } return dfd.promise(); } $.when(ok(1),ok(2)).then(function(resp1,resp2){})
//Verwandte APIs sind in 3 Kategorien unterteilt
Kategorie 1: $.when(pro1,pro1) führt mehrere Promise-Objekte in der Beziehung von und zu einem zusammen
Kategorie 2: Versprechen wird ausgelöst, um deferred.resolve([ args ] ) deferred.resolveWith( context, [ args ] ) aufzulösen
und .reject .rejectWith
ablehnenKontextkontext ersetzt dies und Benachrichtigung .notify .notifyWith
Kategorie 3: Reaktion auf den Auslöser deferred.done(args) bei Lösung, deferred.fail() bei Ablehnung, deferred.progress()
Unabhängig von Lösung oder Ablehnung deferred.always()
deferred.then( doneCallbacks, failCallbacks [, progressCallbacks] )
Versprechen (oder aufgeschoben, wie erhält man ein aufgeschobenes Objekt?)
var dfd = new $.Deferred(); return dfd.promise();
Gibt den aktuellen Status des Versprechens zurück
deferred.state() ausstehend (noch nicht abgeschlossen) gelöst, abgelehnt
Pipeline
deferred.pipe( [ doneFilter ], [ failFilter ] ) var defer = $.Deferred() var filtered = defer.pipe( null, function( value ) { return value * 3; }); defer.reject( 6 ); filtered.fail(function( value ) { alert( "Value is ( 3*6 = ) 18: " + value ); });
Die obige jquery-Deferred-Schnelllösung für das Problem des asynchronen Rückrufs ist der gesamte vom Herausgeber freigegebene Inhalt. Ich hoffe, dass er Ihnen eine Referenz geben kann, und ich hoffe, dass Sie Script Home unterstützen.