ホームページ > ウェブフロントエンド > jsチュートリアル > ファイル読み取りの約束を順番に解決するにはどうすればよいですか?

ファイル読み取りの約束を順番に解決するにはどうすればよいですか?

DDD
リリース: 2024-12-29 16:52:14
オリジナル
857 人が閲覧しました

How Can I Sequentially Resolve Promises for File Reading?

Promise 解決をシーケンスする方法

問題:

ファイルの配列をシリアルに読み取る以下のコードを考えてみましょう。

var readFile = function(file) {...};
var readFiles = function(files) {...};
ログイン後にコピー

この再帰的ソリューションが機能する一方で、 readSequential 関数を使用せずに、より単純な方法が望まれます。

解決策 1: Promise.all

当初は Promise.all が試行されましたが、すべての readFile 呼び出しが同時に呼び出されていました。

var readFiles = function(files) {...};
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

解決策 2: 非同期関数

環境でサポートされている場合は、非同期関数を使用できます。

async function readFiles(files) {...};
ログイン後にコピー

解決策 3: Async Generator

遅延読み取りでは、非同期ジェネレーターを使用できます。

async function* readFiles(files) {...};
ログイン後にコピー

解決策 4: For ループ

単純な for ループを代わりに使用できます。

var readFiles = function(files) {...};
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

解決策5:

を削減する、またはコンパクトなソリューションreduce を使用することが可能です。

var readFiles = function(files) {...};
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

解決策 6: Promise ライブラリ

Bluebird のような Promise ライブラリは、この目的のためのユーティリティ メソッドを提供します。

var Promise = require("bluebird");
var readFileAll = Promise.resolve(files).map(fs.readFileAsync,{concurrency: 1 });
ログイン後にコピー

以上がファイル読み取りの約束を順番に解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート