関数をできるだけ早く実行する必要がありますが、いずれの場合も、xmlが正常に生成された後です。
この場合、(値が正確にわからないため)一定の時間を使用しないようにする必要がありますが、次のことを試してください。
function load(){
if (/*check here if the xml has *not yet* been generated*/){
setTimeout(load,50); // try again in 50 milliseconds
return;
}
// do your stuff here
}
これは、xmlの準備ができていない限りループし、利用可能になるとすぐに開始されます。
setTimeoutに関する一般:
文字列を渡すことはできますが、いくつかの理由から、これはお勧めできません。代わりに、関数参照または次のような関数を渡します。
// function reference
setTimeout(load,3000) // no `()` !
// function
setTimeout( function(){load()},3000)
パラメータを関数に渡す必要がある場合は、最初のオプションを使用することはできませんが、簡単に渡すことができる2番目のオプションを使用する必要がありますload(params)
。
このような関数を渡すと、関数setTimeout(load(),3000)
が実行され、load
その戻り値がタイムアウトに渡されます。ただし、3秒後に関数を呼び出して、関数への参照のみを渡す必要があります。
ただし、この方法で関数を実行すると、スコープが異なることに注意してください。