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
DDDoriginal
2024-12-29 16:52:14873parcourir

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) {...};

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!

Déclaration:
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