是否可以使用bluebird promise使用then函数获取两个文件的数据?
fs.readFileAsync('directory/file1.txt')
.then(function(fileData1){
return fs.readFileAsync('directory/file2.txt');
})
.then(function(fileData2){
return console.log(fileData1+fileData2);
})
答案 0 :(得分:1)
您可以将fs.readFileAsync('directory/file1.txt')
中的第一个Bluebird.resolve
调用包装转换为Bluebird承诺,但是您不会在第二个'then'函数的处理程序中获得第一个文件的结果。
在您的情况下,您可以使用Bluebird.all
并行执行这两项操作。
Bluebird.all([
fs.readFileAsync('directory/file1.txt')
, fs.readFileAsync('directory/file2.txt')
])
.spread(function(file1, file2) {
console.log(file1 + file2);
})
如果您使用Bluebird.all
,请记住它需要一个数组。