Problème :
Considérez le code ci-dessous qui lit en série un tableau de fichiers.
var readFile = function(file) {...}; var readFiles = function(files) {...};
Bien que cette solution récursive fonctionne, une méthode plus simple est souhaitée sans utiliser le Fonction readSequential.
Solution 1 : Promise.all
À l'origine, Promise.all a été tentée, mais elle a invoqué simultanément tous les appels readFile.
var readFiles = function(files) {...};
Solution 2 : Fonctions asynchrones
Si prises en charge par l'environnement, une fonction asynchrone peut être utilisée.
async function readFiles(files) {...};
Solution 3 : Générateur asynchrone
Pour une lecture différée, un générateur asynchrone peut être utilisé.
async function* readFiles(files) {...};
Solution 4 : Boucle For
Une boucle for simple peut être utilisé à la place.
var readFiles = function(files) {...};
Solution 5 : Réduire
Alternativement, une solution compacte utilisant la réduction est possible.
var readFiles = function(files) {...};
Solution 6 : Bibliothèques Promise
Les bibliothèques Promise comme Bluebird proposent des méthodes utilitaires pour cela but.
var Promise = require("bluebird"); var readFileAll = Promise.resolve(files).map(fs.readFileAsync,{concurrency: 1 });
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!