您不能从回调中有效地调用您的代码。 return
在回调中使用return
不会向您的代码返回值。fs.readFile()
调用回调本身,因此将return
值赋予它。为了让您的代码接收它,它fs.readFile()
必须return
是它从回调中获得的值,而它没有。
而且,由于fs.readFile()
是异步的,它实际上不能。您的代码跨越 2 个不同的时间点:
“当下”
var content;
var f = fs.readFile('./index.html', /* ... */);
f();
“未来”
/* ... */
function read(err, data) {
if (err) {
throw err;
}
content = data;
return console.log(content);
}
/* ... */
您根本不能在“现在”中使用来自“未来”的值——或者,在那时,“过去”。
这通常会导致继续该callback
模式而不是使用return
. 使用您的“真实”代码:
var cheerioURLContent = function (url, callback) {
rest.get(url).on("complete", function (result) {
callback(cheerio.load(result));
});
};
cheerioURLContent('./index.html', function (t) {
console.log(t);
});