Heim >Web-Frontend >js-Tutorial >Wie kann ich Versprechen für das Lesen von Dateien nacheinander auflösen?

Wie kann ich Versprechen für das Lesen von Dateien nacheinander auflösen?

DDD
DDDOriginal
2024-12-29 16:52:14860Durchsuche

How Can I Sequentially Resolve Promises for File Reading?

So sequenzieren Sie versprochene Lösungen

Problem:

Betrachten Sie den folgenden Code, der ein Array von Dateien seriell liest.

var readFile = function(file) {...};
var readFiles = function(files) {...};

Während diese rekursive Lösung funktioniert, ist eine einfachere Methode ohne Verwendung von wünschenswert readSequential-Funktion.

Lösung 1: Promise.all

Ursprünglich wurde Promise.all versucht, aber es wurden gleichzeitig alle readFile-Aufrufe aufgerufen.

var readFiles = function(files) {...};

Lösung 2: Asynchrone Funktionen

Wenn Unterstützt durch die Umgebung kann eine Async-Funktion verwendet werden.

async function readFiles(files) {...};

Lösung 3: Async-Generator

Für verzögertes Lesen kann ein Async-Generator verwendet werden.

async function* readFiles(files) {...};

Lösung 4: For-Schleife

Ein einfaches for Stattdessen kann eine Schleife verwendet werden.

var readFiles = function(files) {...};

Lösung 5: Reduzieren

Alternativ ist eine kompakte Lösung mit Reduzieren möglich.

var readFiles = function(files) {...};

Lösung 6: Promise-Bibliotheken

Promise-Bibliotheken wie Bluebird bieten Nutzen Methoden hierfür.

var Promise = require("bluebird");
var readFileAll = Promise.resolve(files).map(fs.readFileAsync,{concurrency: 1 });

Das obige ist der detaillierte Inhalt vonWie kann ich Versprechen für das Lesen von Dateien nacheinander auflösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn