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!