我正在尝试使用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;
}
}
});
}
答案 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
})