【发布时间】:2017-05-03 08:56:34
【问题描述】:
let arr = [];
function getData(fileName, type) {
return fs.readFile(fileName,'utf8', (err, data) => {
if (err) throw err;
return new Promise(function(resolve, reject) {
for (let i = 0; i < data.length; i++) {
arr.push(data[i]);
}
resolve();
});
});
}
getData('./file.txt', 'sample').then((data) => {
console.log(data);
});
当我使用上面的代码并使用 nodejs 在命令行中运行它时,出现以下错误。
getData('./file.txt', 'sample').then((data) => {
^
TypeError: Cannot read property 'then' of undefined
我该如何解决这个问题?
【问题讨论】:
-
将
return fs.readFile与return new Promise()交换。您正在返回没有返回值的fs.readFile。 -
你应该使用
reject而不是throw -
正如 Marty 已经指出的那样,您正在返回
fs.readFile()的结果,从当前版本的定义来看,这不是 Promise。您可能会感到困惑,因为在then()内部可能会返回另一个 Promise,然后将其链接起来。
标签: javascript node.js ecmascript-6 es6-promise