您希望函数尽快执行,但在每种情况下都在成功生成 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)
如果您需要将参数传递给函数,则不能使用第一个选项,但需要使用第二个选项,您可以轻松地传递它们load(params)
。
如果你传递这样的函数:setTimeout(load(),3000)
它会执行函数load
并将其返回值传递给超时。但是,您希望在 3 秒后调用该函数,因此只传递对该函数的引用。
但是请注意,如果您以这种方式执行函数,您将拥有不同的范围。