Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menyelesaikan Janji untuk Pembacaan Fail Secara Berurutan?

Bagaimanakah Saya Boleh Menyelesaikan Janji untuk Pembacaan Fail Secara Berurutan?

DDD
DDDasal
2024-12-29 16:52:14873semak imbas

How Can I Sequentially Resolve Promises for File Reading?

Cara Menyusun Resolusi Janji

Masalah:

Pertimbangkan kod di bawah yang membaca susunan fail secara bersiri.

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

Sementara penyelesaian rekursif ini berfungsi, kaedah yang lebih mudah ialah dikehendaki tanpa menggunakan fungsi readSequential.

Penyelesaian 1: Promise.all

Pada asalnya, Promise.all telah dicuba, tetapi ia serentak menggunakan semua panggilan readFile.

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

Penyelesaian 2: Async Fungsi

Jika disokong oleh persekitaran, fungsi async boleh digunakan.

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

Penyelesaian 3: Penjana Async

Untuk bacaan tertunda, penjana async boleh digunakan.

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

Penyelesaian 4: Untuk Gelung

Sebaliknya untuk gelung mudah boleh digunakan.

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

Penyelesaian 5: Kurangkan

Sebagai alternatif, penyelesaian padat menggunakan pengurangan ialah mungkin.

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

Penyelesaian 6: Promise Libraries

Promise library seperti Bluebird menawarkan kaedah utiliti untuk tujuan ini.

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

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyelesaikan Janji untuk Pembacaan Fail Secara Berurutan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn