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
。