我認爲我對setTimeout
在JavaScript中的確有些誤解。我有這樣的腳本:setTimeout在Node.js中等待時間過長
function recursiveFibonacci(n) {
if (n === 0) {
return 1;
} else if (n === 1) {
return 1;
} else {
return recursiveFibonacci(n-1) + recursiveFibonacci(n-2);
}
}
setTimeout(() => {console.log("one second");}, 1000);
console.log(recursiveFibonacci(42));
我會希望發生的是,recursiveFibonacci開始隆隆走在斐波那契序列的第43值。我的電腦需要4秒左右的時間。於是,下班後1秒的評價將被中斷,控制檯將日誌:
one second
,然後在約3秒後登錄:
433494437
相反發生的事情是,在4秒鐘後,控制檯日誌:
433494437
one second
所有一次。爲什麼會這樣?我怎樣才能讓setTimeout
工作?是否是這樣的情況:JavaScript解釋器實際上並未被setTimeout
中斷,而是如果它完成其他作業那麼它將在調用給定函數之前等待已經過去給定的時間量?
編輯:
,我發現這個工具非常有用的理解相關概念:
'setTimeout'是一個函數,它將在給定的時間內並行(幾乎)與其他正在運行的代碼一起執行一個命令。你似乎對延遲更感興趣,比如'$ .delay()'函數。是的,翻譯不會中斷。 – Mikael
@Mikael,'$'沒有在節點中定義。我應該輸入什麼來使用它? – SeanLetendre
jQuery。在JavaScript上下文中'''通常意味着jQuery,抱歉不會更清楚。祝你好運。 – Mikael