当我在代码底部调用 check().then(function(employees)
时,我收到一个引用错误,提示未定义检查,我不确定为什么。这当我调用 getAllEmployees()
;
var employees = [];
var departments = [];
var error = 0;
function initialize(){
var fs = require("fs");
fs.readFile("./data/employees.json", 'utf8', function(err, data){
if(err){
error = 1;
}
employees = JSON.parse(data);
//console.log(employees);
});
fs.readFile("./data/department.json", 'utf8', function(err, data){
if(err){
error = 1;
}
departments = JSON.parse(data);
// console.log(departments);
});
let check = function(){
return new promise(function(resolve,reject){
if (error === 0){
resolve("Success");
}
else if(error === 1){
reject("unable to read file");
}
})
};
}
function getAllEmployees(){
check().then(function(employees){
console.log(employees);
}).catch(function(){
console.log("No results returned");
});
}
最佳答案
- 你忘了把 Promise 大写
- 你的代码结构很糟糕
- 在 Promises 中包装遗留 Node 异步代码
- 将错误处理代码交给调用者
- 在根级别导入 native Node 库(也使它们成为常量)
这是重构后的版本:
const fs = require("fs");
const util = require("util");
const read = util.promisify(fs.readFile);
function init() {
var reads = ["employees.json", "department.json"]
.map(file => read(`./data/${file}`, "utf8").then(JSON.parse));
return Promise.all(reads)
.then(([employees, departments]) => ({ employees, departments }));
}
init().then(console.log).catch(console.error);
关于javascript - Node.js Promise 引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46517159/