有可能使用bluebird promise使用then函数获取两个文件的数据吗?

时间:2017-03-30 19:21:38

标签: bluebird

是否可以使用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);
        })

1 个答案:

答案 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,请记住它需要一个数组。