J'ai deux blocs de travail de promesse.Tous () dans une seule méthode. Je veux combiner ces deux promesses.Tous () en un. La promesse individuelle.All () comprend une fonction de carte qui effectue une tâche asynchrone. Exemple:
let obj1 = [], obj2 = []; await Promise.all(container1.map(async (item)=>{ obj1.push(await dbCall(item)); })) await Promise.all(container2.map(async (item)=>{ obj2.push(await dbCall(item)); }))
3 Réponses :
Gardez à l'esprit que la promesse.Tous la fonction s'attend à une gamme de promesses et non à une gamme de matrices de promesses, d'où il échoue. Il vous suffit de passer la structure correcte de la matrice, que vous pouvez faire avec array.map code> retourne un nouveau tableau em>, dans ce cas, une gamme de promesses depuis Async / Attendre les fonctions de retour toujours des promesses. Donc, votre exemple de transmission
[map1, map2] code> sera une matrice bidimensionnelle; Ce sera une gamme de matrices de promesses. Quelque chose comme ceci:
array.concat code> (pour la syntaxe ES5) ou de l'opérateur répandu (pour la syntaxe ES6). P>
Promise.all(map1.concat(map2));
// OR
Promise.all([...map1, ...map2]);
Complètement manqué la matrice bidimensionnelle de plusieurs cartes. La fusion au-dessus des fonctions de la carte aidées à attendre pour toutes les promesses à compléter. Merci! @Icemetalpunk!
Vous essayez d'abord de fusionner les deux tableaux, puis
let obj = []; container1.foreach((item)=>{ obj.push(dbCall(item)); }) container2.foreach((item)=>{ obj.push(dbCall(item)); }) await Promise.all(obj)
Hey Isuru, merci d'avoir pris votre temps. Ici, les dBCalls sont asynchrones. Par conséquent, j'aurai besoin d'ajouter dans l'attente à chaque dBCall que je fais. Malheureusement, nous ne pouvons pas avoir de fonctions asynchrones comme rappels pour «foreach». Donc, la pièce de code ci-dessus ne récupérera pas la valeur donnée par le DBCall. Mais la fusion des cartes a du sens. Merci isuru :)
Tout d'abord simplifier votre code à partir de ce tableau puis, pour les exécuter simultanément, ajoutez une autre poussant code> ing vers
promess.All Code> autour d'eux: p>