この質問はかなり似ているようですが、私はそれを実装しようとしましたが、私はそれを実装しようとしましたが、私のコードで答えてください。 similar questionJavaScriptのコールバック関数でコールバック関数の変数を割り当てる方法
今ここには私の問題ですが、私は、コードのこの部分があります
var fs = require('fs');
var index = JSON.parse(fs.readFileSync('../data/7XXX7/index.json', 'utf8'));
window = {};
var indicators = require('./indicators');
var parser = new window.patient.Indicator('tes', 'test');
var i = 0;
function create_indicators() {
var result = [];
fs.readdirSync('../data/7XXX7/files/').forEach(file => {
fs.readFile('../data/7XXX7/files/' + file, 'utf8', function (err, data) {
if (err)
throw err;
let $ = {};
$.poids = parser.poids(data);
$.taille = parser.taille(data);
$.temperature = parser.temperature(data);
$.tension = parser.tension(data);
$.pouls = parser.pouls(data);
$.ps = parser.ps(data);
$.saturation = parser.saturation(data);
for (var j in index.files)
{
if (index.files[j].name === file)
{
$.id = index.files[j].name;
$.date = index.files[j].date;
$.name = index.files[j].IntituleSession;
break;
}
}
if ($.poids || $.taille || $.temperature || $.tension || $.pouls || $.ps || $.saturation)
{
result.push($);
console.log(result); // print the actual state of result
// console.log(i); prints 0 then 1 then ...
i++;
}
});
console.log(i); // prints 0
});
console.log(result); // prints []
return result;
}
let result = create_indicators();
console.log(result); // prints []
をそして、それは表示されます。
[]
はなぜreadFileの中にコールバック関数は、それ自身の変数を持っているのでしょうか?それは非同期なのですか?しかし、私がreadFileSyncを使うと、それもうまくいきません。
私はそれに入れたすべての値を取得する方法は?私がresult.push($)の後にログ結果をコンソールするとき。それは私のパーサではないので、私は適切にインデントされています。ここで
[非同期呼び出しからの応答を返すにはどうすればよいですか?](https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-コール) – Li357