Maison >interface Web >js tutoriel >Comment puis-je transmettre un tableau d'objets différés au « $.when() » de jQuery ?

Comment puis-je transmettre un tableau d'objets différés au « $.when() » de jQuery ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-09 21:57:13633parcourir

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

Passer un tableau de différés à $.when()

Lorsque vous traitez un ensemble complexe de tâches asynchrones, il peut être pratique de transmettez un tableau d'objets différés à la méthode $.when() pour avertir lorsque toutes les tâches sont terminées. Cependant, par défaut, $.when() attend des objets Deferred séparés en tant que paramètres individuels, ce qui peut s'avérer peu pratique si le nombre d'objets Deferred est inconnu. Cet article fournit une solution à ce problème en utilisant Function.prototype.apply.

Solution :

Pour transmettre un tableau d'objets différés à $.when(), utilisez la méthode Function.prototype.apply comme suit :

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

Cela vous permet de transmettre un tableau d'objets différés comme argument unique à $.quand(). L'exemple de code ci-dessous illustre cette approche :

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

ES6:

Dans ES6, vous pouvez utiliser l'opérateur spread (...) au lieu de Function.prototype .apply :

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

Remarque :

Il est important de notez que la fonction de gestionnaire fournie à la méthode .then() doit traiter le tableau d'arguments pour récupérer le résultat de chaque promesse. Étant donné que le nombre de paramètres formels dont le gestionnaire aura besoin est probablement inconnu à l'avance, le gestionnaire doit en conséquence traiter le tableau d'arguments.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn