これは私がやろうとしていることです:
- リモート サーバー スクリプトから JSON オブジェクトを要求する
- JavaScript がすべての応答データを取得するまで待機します
- 応答オブジェクトから値を出力します
get config 関数で setTimeout を使用して、値が未定義の場合は 1 秒後に自分自身をリコールしようとしています。
あるいは、数秒間ループするメソッドを作成することもできるようですが、私がやろうとしていることを達成するためのより良い方法があれば、それを避けたいですか? 私の現在のコードは、ランタイムを壊す遅延なしに再帰しているようです
アイデアをありがとう、コードは次のとおりです。
function runApplication() {
var initialiser = new Initialiser();
var config = new Config();
initialiser.fetchConfigurations(config);
config.alertValue('setting1');
}
function Initialiser() {
debug.log("Started");
}
Initialiser.prototype.fetchConfigurations = function(config) {
var req = new XMLHttpRequest();
var url = CONFIGURATION_SERVER_URL;
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
var configObject = eval('(' + req.responseText + ')');
config.setConfig(configObject);
} else {
debug.log("Downloading config data...please wait...");
}
}
req.open("GET", url, true);
req.send(null);
}
function Config() {
this.config
}
Config.prototype.setConfig = function(configObject) {
this.config = configObject;
}
Config.prototype.getValue = function(setting) {
if(this.config === undefined) {
setTimeout(this.getValue(setting), 1000);
} else {
return this.config[setting];
}
}
Config.prototype.alertValue = function(setting) {
if(this.config === undefined) {
setTimeout(this.alertValue(setting), 1000);
} else {
alert(this.config[setting]);
}
}