javascript承诺读取文件

javascript承诺读取文件,javascript,promise,Javascript,Promise,我有两个文件读取器,还有两个承诺,每个文件读取器一个,如下所示 var fs1 = require('fs'); var fs2 = require('fs'); var r = new Promise(function(resolve, reject) { fs1.readFile('reads.txt','utf8',function(e,d){ if(e) reject('E R') else resolve(d.trim()); }) })

我有两个文件读取器,还有两个承诺,每个文件读取器一个,如下所示

var fs1 = require('fs');
var fs2 = require('fs');
var r = new Promise(function(resolve, reject) {
    fs1.readFile('reads.txt','utf8',function(e,d){
        if(e) reject('E R')
        else resolve(d.trim());
    })
});
var w = new Promise(function(resolve, reject) {
    fs2.readFile('write.txt','utf8',function(e,d){
        if(e) reject('E W')
        else resolve(d.trim());
    })
});


Promise.all([r,w])
    .then(function(q) {
        console.log(q);
    })
    .catch(function(e) {
        console.log(e);
    })
这很好,但我希望reading file部分位于一个单独的函数中,如下所示:

function filereader( theFS, theFilePath){
....
}
有可能吗?怎么可能?
谢谢

有什么原因不能为它编写函数吗

var fs1 = require('fs');
var fs2 = require('fs');

function filereader(fsRef, path) {
  return new Promise(function(resolve, reject) {
    fsRef.readFile(path,'utf8',function(e,d){
        if(e) reject('E R')
        else resolve(d.trim());
    })
  })
}

var w = filereader(fs2, 'write.txt')

var r = filereader(fs1, 'read.txt')

Promise.all([r,w])
    .then(function(q) {
        console.log(q);
    })
    .catch(function(e) {
        console.log(e);
    })

你是说一个从fs1和fs2开始的函数,这样你就不会重复代码了?是的,当然是,请尝试。这与将任何其他代码抽象到函数中没有什么不同。请注意
fs1===fs2
。只有一个模块,需要多次使用
fs
不会改变这一点。@AmirShahbabaie您在哪里使用函数参数,如
theFilePath
?您返回什么??作为提示,由于NodeJS 8需要将基于回调的函数转换为基于承诺的函数。不,没有理由,这似乎是如何实现的问题。您也应该将函数用于
w