Node.js函数返回Undefined?

时间:2018-03-11 17:41:03

标签: javascript node.js asynchronous

我正在尝试使用node.js创建一个函数,该函数检查在线文件的哈希值以查看它是否已被更改。每次调用我的函数时,它总是返回undefined。我理解这个问题与异步函数有关,但我不太明白它们是如何工作的。

const crypto = require("crypto")
const request = require("request") 

function checkHash(url, hash) {
    request.get(url, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            if (crypto.createHash('md5').update(body).digest("hex") !== hash) {
                return true;
            } else {
                return false;
            }
        }
    });
}

1 个答案:

答案 0 :(得分:0)

作为异步通话,您必须提供一种方法来挽回您返回的值。可能的方法是使用callbacks,如下所示:

const crypto = require("crypto")
const request = require("request") 

function checkHash(url, hash, callback) {
    request.get(url, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            if (crypto.createHash('md5').update(body).digest("hex") !== hash) {
                return callback(null, true);
            } else {
                return callback(null, false);
            }
        }
        return callback(error);
    });
}

然后调用chechHash传递函数作为参数:

checkHash(url, hash, function(err, response) {
    if(err) return console.log(err);
    //response is here
})