コードへのコールバック内から便利 に使用することはできません。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);
});