Heim Web-Frontend js-Tutorial Einführung in die Verwendung verzögerter Objekte in JQuery (mit Beispielen)

Einführung in die Verwendung verzögerter Objekte in JQuery (mit Beispielen)

Mar 27, 2019 am 09:20 AM
javascript

Dieser Artikel bietet Ihnen eine Einführung in die Verwendung verzögerter Objekte in jquery (mit Beispielen). Ich hoffe, dass er Ihnen als Referenz dienen wird.

Was ist ein zurückgestelltes Objekt?

Verzögerte Objekte, eingeführt in jQuery 1.5, erstellen ein verkettbares Werkzeugobjekt durch Aufrufen der jQuery.Deferred()-Methode. Es kann mehrere Rückrufe in der Rückrufwarteschlange registrieren, die Rückrufwarteschlange aufrufen und sich darauf vorbereiten, den Erfolgs- oder Fehlerstatus jeder synchronen oder asynchronen Funktion zu ersetzen. ——Chinesische Dokumentation der jQuery-API Einfach ausgedrückt ist das verzögerte Objekt die Rückruffunktionslösung von jQuery. Im Englischen bedeutet defer „Verzögerung“. Die Bedeutung eines verzögerten Objekts besteht also darin, die Ausführung bis zu einem bestimmten Punkt in der Zukunft zu „verzögern“. Es löst das Problem der Handhabung zeitaufwändiger Vorgänge, bietet eine bessere Kontrolle über diese Vorgänge und eine einheitliche Programmierschnittstelle. ——Ruan Yifeng

Die Hauptfunktion des verzögerten Objekts

Kettenschreibmethode der Ajax-Operation

$.ajax("test.html")
   .done(function(){ alert("success"); })
   .fail(function(){ alert("error"); });
Nach dem Login kopieren

$.ajax() Nach der Operation ist abgeschlossen, wenn Sie eine Version von jQuery verwenden, die niedriger als 1.5.0 ist, wird ein XHR-Objekt zurückgegeben und Verkettungsvorgänge können nicht ausgeführt werden; wenn es sich um eine Version höher als 1.5.0 handelt, wird ein verzögertes Objekt zurückgegeben und Verkettungsvorgänge sind möglich . Wie Sie sehen können, entspricht done() der Erfolgsmethode und fail() entspricht der Fehlermethode. Nach der Einführung der Kettenschreibmethode wird die Lesbarkeit des Codes erheblich verbessert.

Hier betonen wir das jqXHR-Objekt. Ab jQuery 1.5 ist das von $.ajax() zurückgegebene jqXHR-Objekt selbst ein verzögertes Objekt, sodass es wie im obigen Code in einer Kette aufgerufen werden kann.

Ab jQuery 1.5 implementiert das von $.ajax() zurückgegebene jqXHR-Objekt die Promise-Schnittstelle, sodass es über alle Eigenschaften, Methoden und Verhaltensweisen von Promise verfügt. (Weitere Informationen finden Sie unter „Verzögertes Objekt“). Um den Namen der Rückruffunktion in $.ajax() zu vereinheitlichen und einfach zu verwenden. jqXHR bietet auch die Methoden .error(), .success() und .complete(). Diese Methoden benötigen alle einen Parameter, bei dem es sich um eine Funktion handelt, die am Ende der $.ajax()-Anfrage aufgerufen wird, und die von dieser Funktion empfangenen Parameter stimmen mit den Parametern beim Aufruf der $.ajax()-Funktion überein . Auf diese Weise können Sie in einer einzigen Anfrage mehrere Callback-Funktionen zuweisen und sogar Callback-Funktionen zuweisen, nachdem die Anfrage abgeschlossen ist (wenn die Anfrage abgeschlossen ist, wird die Callback-Funktion sofort aufgerufen).

Hinweis: Die Rückrufe jqXHR.success(), jqXHR.error() und jqXHR.complete() sind ab jQuery 1.8 veraltet und ab jQuery 3.0 entfernt. Sie können jqXHR.done(), jqXHR verwenden .fail() und stattdessen jqXHR.always().

Geben Sie mehrere Rückruffunktionen für denselben Vorgang an
Einer der großen Vorteile des verzögerten Objekts besteht darin, dass Sie mehrere Rückruffunktionen frei hinzufügen können. Was soll ich am Beispiel des obigen Codes tun, wenn ich nach erfolgreicher Ajax-Operation zusätzlich zur ursprünglichen Rückruffunktion auch eine weitere Rückruffunktion ausführen möchte? Es ist ganz einfach, fügen Sie es einfach am Ende hinzu.

$.ajax("test.html")
   .done(function(){ alert('success'); })
   .fail(function(){ alert('error'); })
    .done(function(){ alert('第二个回调函数!'); });
Nach dem Login kopieren

Sie können so viele Rückruffunktionen hinzufügen, wie Sie möchten, und sie werden in der Reihenfolge ausgeführt, in der sie hinzugefügt werden.

Rückruffunktionen für mehrere Vorgänge angeben
Ein weiterer großer Vorteil des verzögerten Objekts besteht darin, dass Sie eine Rückruffunktion für mehrere Ereignisse angeben können, was mit herkömmlichem Schreiben nicht möglich ist. von.

Bitte schauen Sie sich den folgenden Code an, der eine neue Methode jQuery.when() verwendet:

$.when($.ajax("test1.html"), $.ajax("test2.html"))
   .done(function(){ alert('success'); })
   .fail(function(){ alert('error'); });
Nach dem Login kopieren

Die Bedeutung dieses Codes besteht darin, zuerst zwei Operationen auszuführen $.ajax("test1 .html ") und $.ajax("test2.html"), wenn beide erfolgreich sind, wird die durch done() angegebene Rückruffunktion ausgeführt; wenn einer fehlschlägt oder beide fehlschlagen, wird die durch fail() angegebene Rückruffunktion ausgeführt.

$.when() Einzelheiten zur Verwendung der Methode finden Sie in der Dokumentation.

Callback-Funktionsschnittstelle für allgemeine Operationen
Der größte Vorteil des verzögerten Objekts besteht darin, dass es diesen Satz von Callback-Funktionsschnittstellen von Ajax-Operationen auf alle Operationen erweitert. Mit anderen Worten: Jede Operation – ob es sich um eine Ajax-Operation oder eine lokale Operation handelt, ob es sich um eine asynchrone Operation oder eine synchrone Operation handelt – kann verschiedene Methoden des verzögerten Objekts verwenden, um eine Rückruffunktion anzugeben.

Sehen wir uns ein konkretes Beispiel an, in dem eine Rückruffunktion für eine zeitaufwändige Operation „Wait“ angegeben wird:

var wait = function (dtd) {
    var dtd = $.Deferred(); // 在函数内部,新建一个Deferred对象
    var tasks = function () {
        alert('执行完毕!');
        dtd.resolve(); // 改变Deferred对象的执行状态
    };

    setTimeout(tasks, 5000);
    return dtd.promise(); // 返回promise对象
};

$.when(wait())
    .done(function () { alert('success'); })
    .fail(function () { alert('error'); });
Nach dem Login kopieren

Eine andere Möglichkeit besteht darin, die Wartefunktion direkt an $.Deferred() zu übergeben:

$.Deferred(wait)
   .done(function(){ alert('success'); })
   .fail(function(){ alert('error'); });
Nach dem Login kopieren

jQuery legt fest, dass $.Deferred() einen Funktionsnamen (beachten Sie, dass es sich um einen Funktionsnamen handelt) als Parameter akzeptieren kann und das von $.Deferred() generierte verzögerte Objekt als Standardparameter von verwendet wird diese Funktion.

Weitere spezifische Informationen finden Sie in der Dokumentation von Ruan Yifeng.

Methode des verzögerten Objekts

$.Deferred() generiert ein verzögertes Objekt.
Die Factory-Funktion jQuery.Deferred([beforeStart]) erstellt ein neues verzögertes Objekt.

Beschreibung: Eine Factory-Funktion, die ein verkettetes Dienstprogrammobjekt zurückgibt. Verwenden Sie die Return-Object-Methode, um mehrere Rückrufe in der Rückrufwarteschlange zu registrieren, die Rückrufwarteschlange aufzurufen und den Erfolgs- oder Fehlerstatus einer beliebigen synchronen oder asynchronen Funktion zu übergeben . .

beforeStart : Typ Function( Deferred deferred ), ein Konstruktor, der die zuvor aufgerufene Funktion zurückgibt.

jQuery.Deferred 方法可以传递一个可选的函数, 这个函数在方法返回之前调用,并且会把新的 deferred(延迟)对象作为 this 对象,将其作为第一个参数传递给函数。例如,被调用的函数可以使用 deferred.then() 绑定回调。

deferred.done() 指定操作成功时的回调函数。

deferred.fail() 指定操作失败时的回调函数。

deferred.promise() 没有参数时,返回一个新的 deferred。 对象,该对象的运行状态无法被改变;接受参数时,作用为在参数对象上部署 deferred 接口。

deferred.resolve() 手动改变 deferred 对象的运行状态为"已完成",从而立即触发 done() 方法。

一个 Deferred(延迟)对象开始于 pending 状态。 任何回调使用 deferred.then(), deferred.always(), deferred.done(), 或者 deferred.fail() 添加到这个对象都是排队等待执行。调用 deferred.resolve() 转换 Deferred(递延)到 resolved(解决)的状态,并立即执行设置中任何的 doneCallbacks。调用 deferred.reject() 转换 Deferred(递延)到 rejected(拒绝)的状态,并立即执行设置中任何的 failCallbacks。一旦对象已经进入了解决或拒绝状态,它处于该状态。回调仍然可以添加到解决或拒绝 Deferred(递延)- 他们会立即执行。

$.ajax() 返回的 jqXHR 对象 会根据请求返回的结果,自动改变自身的执行状态。但是,对于其他通过 $.Deferred() 方法生成的 deferred 对象,它们的执行状态必须由程序员手动指定,由代码决定在什么时候触发回调函数。

deferred.reject() 这个方法与 deferred.resolve() 正好相反,调用后将 deferred 对象的运行状态变为"已失败",从而立即触发 fail() 方法。

$.when() 为多个操作指定回调函数。

deferred.then() 方法
有时为了省事,可以把 done() 和 fail() 合在一起写,这就是 then() 方法。

$.when($.ajax( '/main.php' ))
   .then(successFunc, failureFunc);
Nach dem Login kopieren

如果 then() 有两个参数,那么第一个参数是 done() 方法的回调函数,第二个参数是 fail() 方法的回调方法。如果 then() 只有一个参数,那么等同于 done()。

deferred.always() 方法
这个方法也是用来指定回调函数的,它的作用是,不管调用的是 deferred.resolve() 还是 deferred.reject(),最后总是执行。

$.ajax( 'test.html' )
    .always( function() { alert('已执行!');} );
Nach dem Login kopieren

更多信息请参见 jQuery API中文文档。

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的JavaScript视频教程栏目!

Das obige ist der detaillierte Inhalt vonEinführung in die Verwendung verzögerter Objekte in JQuery (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1673
14
PHP-Tutorial
1278
29
C#-Tutorial
1257
24
WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen Dec 17, 2023 pm 05:30 PM

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript Dec 17, 2023 pm 02:54 PM

So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten Lösung entwickelt. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Dec 17, 2023 pm 12:09 PM

Einführung in die Verwendung von JavaScript und WebSocket zur Implementierung eines Online-Bestellsystems in Echtzeit: Mit der Popularität des Internets und dem Fortschritt der Technologie haben immer mehr Restaurants damit begonnen, Online-Bestelldienste anzubieten. Um ein Echtzeit-Online-Bestellsystem zu implementieren, können wir JavaScript und WebSocket-Technologie verwenden. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert und eine bidirektionale Kommunikation zwischen Client und Server in Echtzeit realisieren kann. Im Echtzeit-Online-Bestellsystem, wenn der Benutzer Gerichte auswählt und eine Bestellung aufgibt

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript Dec 17, 2023 am 09:39 AM

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript. Im heutigen digitalen Zeitalter müssen immer mehr Unternehmen und Dienste Online-Reservierungsfunktionen bereitstellen. Es ist von entscheidender Bedeutung, ein effizientes Online-Reservierungssystem in Echtzeit zu implementieren. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Reservierungssystem implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist WebSocket? WebSocket ist eine Vollduplex-Methode für eine einzelne TCP-Verbindung.

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Dec 17, 2023 pm 05:13 PM

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

So verwenden Sie insertBefore in Javascript So verwenden Sie insertBefore in Javascript Nov 24, 2023 am 11:56 AM

Verwendung: In JavaScript wird die Methode insertBefore() verwendet, um einen neuen Knoten in den DOM-Baum einzufügen. Diese Methode erfordert zwei Parameter: den neuen Knoten, der eingefügt werden soll, und den Referenzknoten (d. h. den Knoten, an dem der neue Knoten eingefügt wird).

So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript Jan 05, 2024 pm 01:37 PM

Einführung in die Methode zum Abrufen des HTTP-Statuscodes in JavaScript: Bei der Front-End-Entwicklung müssen wir uns häufig mit der Interaktion mit der Back-End-Schnittstelle befassen, und der HTTP-Statuscode ist ein sehr wichtiger Teil davon. Das Verstehen und Abrufen von HTTP-Statuscodes hilft uns, die von der Schnittstelle zurückgegebenen Daten besser zu verarbeiten. In diesem Artikel wird erläutert, wie Sie mithilfe von JavaScript HTTP-Statuscodes erhalten, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist ein HTTP-Statuscode? HTTP-Statuscode bedeutet, dass der Dienst den Dienst anfordert, wenn er eine Anfrage an den Server initiiert

See all articles