javascript - Node.js Promise 引用错误

标签 javascript node.js promise

当我在代码底部调用 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/

相关文章:

javascript - 如何使d3折线图中的线条更平滑?

Node.js 以异步模式将值传递给变量

node.js - BlueBird Promises 在 "Undefined"函数内部返回时返回 "then"

javascript - Mongoskin 中的分页(跳过 + 限制)

javascript - forEach 中的 promise 返回

c++ - 函数返回的 future

javascript - Mongodb 查找不返回数组

javascript - 干燥 Jasmine 嵌套描述 block

javascript - Laravel - jQuery 在正确的路径下不工作?

javascript - Safari 在表单提交期间不更新 UI