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