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
858 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!

source:php.cn
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