Appjs プログラムで単純なファイル読み取り機能を作成しようとしています。起こっていることは、Appjs がapp.js
ファイル内の関数を呼び出して、それを node.js で実行していることだけです。この関数は、Appjs プログラムに値を返します。window.returnData = data;
これは機能しますが、希望する順序で機能させることはできません。node.js 関数は Appjs 関数の後に実行されているようですが、その中にあります。
これは、プロセス全体を開始するAppjsindex.html
ファイル内の関数です。
var returnData;
function r(path,d) {
window.readFromFile(path,d); //call to the function readFromFile below
alert(returnData);
}
readFromFile()
上から呼び出されている app.js ファイルの関数
window.readFromFile = function(path,d) {
var fs = require('fs');
if (d == 1) {
path = __dirname + path;
}
fs.readFile(path, {encoding: 'utf-8'}, function(err,data){
if (err){
console.log(err);
} else {
console.log('File read');
window.returnData = data;
}
});
}
これが私の問題です。この関数の最初の呼び出しは、テキストを警告しますundefined
。ただし、アラート機能の後、window.returnData = data;
変数を再度アラートするボタンを作成するreturnData
か、関数を再度実行するreadFromFile
と、データが正しくアラートされるため、上記の行が機能していることがわかります。
子関数が最初に完了する必要があると考えるのは間違っていますか? これを回避する方法はありますか?変数の変更を継続的にチェックするループを作成したくありません。
前もって感謝します。