是否有延迟函数返回,使用setTimeout()
。延迟函数返回
function foo(){
window.setTimeout(function(){
//do something
}, 500);
//return "some thing but wait till SetTimeout() finished";
}
是否有延迟函数返回,使用setTimeout()
。延迟函数返回
function foo(){
window.setTimeout(function(){
//do something
}, 500);
//return "some thing but wait till SetTimeout() finished";
}
.setTimeout()
用于在超时后运行完整功能。它是而不是用于延迟代码。
https://developer.mozilla.org/En/Window.setTimeout
一个很好的链接是:What is the JavaScript version of sleep()?
(一个很好的问题要问的是为什么你需要你的函数睡觉?)
就打电话给你要的东西在超时功能结束超时后发生如下:
function foo()
{
window.setTimeout(function()
{
//do something
delayedCode(returnValue);
}, 500);
return
}
function delayedCode(value)
{
// do delayed stuff
}
而不是返回。将依赖返回值的代码放入delayedCode()
并将参数传递给该函数。
您不想“延迟”代码,因为它会锁定浏览器线程,导致整个浏览器无法使用,直到您的脚本超时已过。
您可以设置一个事件,侦听经过一段时间后触发的信号。 jQuery的.bind()
和.trigger()
是你想要
什么,或者,你可以使用一个回调函数,你想要的时间ellapsed后的数据进行工作。所以,如果你打算是这样的:
function myFunc() {
doStuff();
result = delayProcess(5000);
$('#result').html(result);
}
function delayProcess(delay) {
// magic code that delays should go here
return logic;
}
应该是这样的:
function myFunc() {
doStuff()
delayProcess(5000, function(result){ // Notice the callback function pass as an argument
$('#result').html(result);
});
}
function delayProcess(delay, callback) {
result = logic;
setTimeout(function(){
callback(result);
});
}
的*的setTimeout *调用不会启动,直到目前的功能已经完成,因此,如果当前函数正在等待* setTimeout *返回它将有一个非常长的等待...... :( – RobG 2011-06-14 04:57:03