是否有延遲函數返回,使用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