私はNode.jsを新しく使いました。私はfs.readFile()
と混同しました。コールバックが引数として含まれていると、fs.readFileにラッパーが必要なのはなぜですか?
は当初、私はこれがnull印刷、しかし私は
fs.readFile("file.txt",function(err,data) {
if(err) {throw err;}
console.log(data);
});
を使用してファイルを読むことができると考えました。私はdocumentationと相談し、まったく同じ例とそれがうまくいくと主張します!
その後、私は解決策がコールバックを取る、独自の機能でfs.readFile()
をラップしていることを、スタックオーバーフローを相談しthis postとthis postで見つかった:
function read(file,callback) {
fs.readFile("file.txt",function(err,data) {
if(err) {throw err;}
callback(data);
});
}
read(file, function(data) {
console.log(data);
});
、それだけで新しい変数にデータを代入することが可能です:
var content;
fs.readFile("file.txt",function(err,data) {
if(err) {throw err;}
content = data;
console.log(content);
});
私の理解では、非同期関数は(ここでは、ファイルの内容)いくつかの値を完了し、返すときに、コールバックが返されたデータ上で動作するということです。
fs.readFile(file,callback)
は、コールバック関数に渡されることを想定した場合fs.readFile()
が完了する前に、なぜそれは一見、コールバックを実行していますか?なぜデータを別の変数に割り当てるのが変わるのですか?
ありがとう。
あなたの最初のコード*ん*うまく動作します。その前に 'var fs = require(" fs ");'があり、現在のディレクトリに "file.txt"というファイルがあると仮定して動作します。 – Pointy
Hmm。私はもう一度試してみるとうまくいった。私は前に私のエラーを引き起こしていたのだろうか。 –