Heim > Web-Frontend > js-Tutorial > Wie kann ich Arrays von Deferreds mit $.when() von jQuery korrekt verarbeiten?

Wie kann ich Arrays von Deferreds mit $.when() von jQuery korrekt verarbeiten?

Mary-Kate Olsen
Freigeben: 2024-12-10 20:54:16
Original
875 Leute haben es durchsucht

How Can I Correctly Handle Arrays of Deferreds with jQuery's $.when()?

Umgang mit Arrays von Deferreds in $.when()

Beim Arbeiten mit Arrays von Deferred Promises ist es wichtig zu wissen, wie man damit umgeht wenn sie an $.when() übergeben werden. In diesem Artikel werden wir uns mit einem Problem befassen, bei dem ein Array von Deferreds von $.when() nicht korrekt verarbeitet wird, und eine Lösung anbieten.

Das Problem

Betrachten Sie den folgenden Code:

function getSomeDeferredStuff() {
  var deferreds = [];

  for (i = 1; i <= 10; i++) {
    var count = i;

    deferreds.push(
      $.post('/echo/html/', {
        html: '<p>Task #' + count + ' complete.',
        delay: count
      }).success(function(data) {
        $("div").append(data);
      }));
  }

  return deferreds;
}

$(function() {
  $("a").click(function() {
    var deferreds = getSomeDeferredStuff();

    $.when(deferreds).done(function() {
      $("div").append('<p>All done!</p>');
    });
  });
});
Nach dem Login kopieren

In diesem Beispiel lautet „Alles erledigt!“ sollte erscheinen, nachdem alle zurückgestellten Aufgaben abgeschlossen sind. Allerdings erkennt $.when() das Array von Deferreds nicht als einzelne Entität, was zu „Alles erledigt!“ führt. wird vorzeitig angezeigt.

Die Lösung

Um ein Array von Deferreds an $.when() zu übergeben, verwenden Sie Function.prototype.apply:

$.when.apply($, my_array).then( ___ );
Nach dem Login kopieren

Diese Funktion nimmt ein Array von Parametern und wendet sie auf eine Funktion an. Zum Beispiel:

$.when.apply($, deferreds).then(function() {
  $("div").append('<p>All done!</p>');
});
Nach dem Login kopieren

Alternativ können Sie in ES6 den Spread-Operator verwenden:

$.when(...my_array).then( ___ );
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Arrays von Deferreds mit $.when() von jQuery korrekt verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage