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
Freigeben: 2024-12-29 16:52:14
Original
848 Leute haben es durchsucht

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) {...};
Nach dem Login kopieren

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) {...};
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Lösung 2: Asynchrone Funktionen

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

async function readFiles(files) {...};
Nach dem Login kopieren

Lösung 3: Async-Generator

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

async function* readFiles(files) {...};
Nach dem Login kopieren

Lösung 4: For-Schleife

Ein einfaches for Stattdessen kann eine Schleife verwendet werden.

var readFiles = function(files) {...};
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Lösung 5: Reduzieren

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

var readFiles = function(files) {...};
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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 });
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage