问题:
考虑下面的代码,该代码连续读取文件数组。
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 function* readFiles(files) {...};
解决方案 4:For 循环
可以使用简单的 for 循环来代替。
var readFiles = function(files) {...};
解决方案5:Reduce
或者,使用reduce的紧凑解决方案
var readFiles = function(files) {...};
解决方案 6:Promise 库
像 Bluebird 这样的 Promise 库提供了用于此目的的实用方法。
var Promise = require("bluebird"); var readFileAll = Promise.resolve(files).map(fs.readFileAsync,{concurrency: 1 });
以上是如何依次解决文件读取的 Promise?的详细内容。更多信息请关注PHP中文网其他相关文章!