Maison > interface Web > js tutoriel > Comment puis-je résoudre séquentiellement les promesses de lecture de fichiers ?

Comment puis-je résoudre séquentiellement les promesses de lecture de fichiers ?

DDD
Libérer: 2024-12-29 16:52:14
original
901 Les gens l'ont consulté

How Can I Sequentially Resolve Promises for File Reading?

Comment séquencer les résolutions des promesses

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) {...};
Copier après la connexion

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) {...};
Copier après la connexion
Copier après la connexion
Copier après la connexion

Solution 2 : Fonctions asynchrones

Si prises en charge par l'environnement, une fonction asynchrone peut être utilisée.

async function readFiles(files) {...};
Copier après la connexion

Solution 3 : Générateur asynchrone

Pour une lecture différée, un générateur asynchrone peut être utilisé.

async function* readFiles(files) {...};
Copier après la connexion

Solution 4 : Boucle For

Une boucle for simple peut être utilisé à la place.

var readFiles = function(files) {...};
Copier après la connexion
Copier après la connexion
Copier après la connexion

Solution 5 : Réduire

Alternativement, une solution compacte utilisant la réduction est possible.

var readFiles = function(files) {...};
Copier après la connexion
Copier après la connexion
Copier après la connexion

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 });
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal