我有一个如下对象:
let myObj ={
doSomething:(path, fileName)=>{
myObj.readFile(path, fileName).then((data)=>{
console.log(data);
})
}, //doSomething
readFile:(path, fileName)=>{
return new Promise((resolve, reject) => {
fs.readFile(path.join(p, f), { encoding: "utf8", flag: "r" }, (err, data) => {
if (err) {
throw new Error(err.message);
}
console.log(data);
resolve(data);
})//fs.readFile-callback
});// return
}//readFile
} //myOb
问题
我可以使用以下代码行直接读取文件:myObj.readFile('path/to/file','fileName').then((data)=>{console.log(data);})
但是,当我尝试在myObj.doSomething('path/to/file','fileName').then((data)=>{console.log(data);})
我收到错误消息:无法读取属性'然后'未定义的
我无法理解这里的黑客是什么?
请注意,我正在尝试编写此对象myObj
,以分析一些文件(HTML,CSS,JS)。
先谢谢你。
答案 0 :(得分:2)
你没有回复承诺:
doSomething:(path, fileName)=>{
return myObj.readFile(path, fileName);
}, //doSomething
顺便说一下,你应该拒绝而不是抛出:
if (err) {
reject(err)
}
答案 1 :(得分:0)
myObj.doSomething是一个不返回承诺的函数,所以你不可能再调用它。