我觉得有办法兑现诺言,但我不知道怎么做。
就在这里。由于promise确实表示异步值,因此您将在一个流的结尾得到一个promise:
var p = new Promise(function(resolve, reject) { fs.createReadStream(file) .on('error', reject) .pipe() .on('end', resolve) .on('error', reject); // call reject(err) when something goes wrong});
它可以像使用
p.then(functio(usageInfo) { console.log("stream ended"); })。
现在,如果您创建多个promise,其中一个用于数组中的文件名,则所有流将并行运行,并在完成时解析各自的promise。然后,您可以
Promise.all用来收集-读取“
await”-将它们各自的所有结果转换成一系列结果的新承诺。
var promises = ['file1', 'file2', 'file3'].map(function(file) { return new Promise(function(resolve, reject) { … });});Promise.all(promises).then(function(usageInfos) { console.log("all of them done", usageInfos),}, function(err) { console.error("(At least) one of them failed", err);});
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)