問題:
ファイルの配列をシリアルに読み取る以下のコードを考えてみましょう。
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 サイトの他の関連記事を参照してください。