Heim >Web-Frontend >js-Tutorial >Wie kann ich ein Array verzögerter Objekte an „$.when()' von jQuery übergeben?

Wie kann ich ein Array verzögerter Objekte an „$.when()' von jQuery übergeben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-09 21:57:13700Durchsuche

How Can I Pass an Array of Deferred Objects to jQuery's `$.when()`?

Übergeben Sie ein Array von Deferreds an $.when()

Beim Umgang mit einem komplexen Satz asynchroner Aufgaben kann dies praktisch sein Übergeben Sie ein Array verzögerter Objekte an die Methode $.when(), um zu benachrichtigen, wenn alle Aufgaben abgeschlossen sind. Allerdings erwartet $.when() standardmäßig separate Deferred-Objekte als einzelne Parameter, was unpraktisch sein kann, wenn die Anzahl der Deferred-Objekte unbekannt ist. Dieser Artikel bietet eine Lösung für dieses Problem mithilfe von Function.prototype.apply.

Lösung:

Um ein Array verzögerter Objekte an $.when() zu übergeben, verwenden Sie die Function.prototype.apply-Methode wie folgt:

$.when.apply($, my_array).then( ___ );

Damit können Sie ein Array von Deferred-Objekten als einzelnes Argument übergeben $.when(). Der folgende Beispielcode demonstriert diesen Ansatz:

var deferreds = getSomeDeferredStuff();
$.when.apply($, deferreds).done(function() {
    $("div").append("<p>All done!</p>");
});

ES6:

In ES6 können Sie den Spread-Operator (...) anstelle von Function.prototype verwenden .anwenden:

$.when(...my_array).then( ___ );

Hinweis:

Es ist Es ist wichtig zu beachten, dass die für die .then()-Methode bereitgestellte Handlerfunktion das Argumentarray verarbeiten sollte, um das Ergebnis jedes Versprechens abzurufen. Da die Anzahl der formalen Parameter, die der Handler benötigt, wahrscheinlich im Voraus unbekannt ist, muss der Handler das Argumentarray entsprechend verarbeiten.

Das obige ist der detaillierte Inhalt vonWie kann ich ein Array verzögerter Objekte an „$.when()' von jQuery übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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