私のタイトルが正しいと願っています。私は今日インタビューをしていましたが、イベントループ/シングルスレッディングを扱う質問で困惑しました。ここにコードがあります:シングルスレッドはJavaScriptでDOM操作をブロックしますか?
function longCB(){
for (var i = 0; i <= 9999; i++){
console.log(i);
}
$('#status').text('hello')
}
$('#status').text('hi')
longCB();
なぜ、DOMは#status divに 'hi'と表示されませんでしたか? インタビュアーが完全に困惑しているのは、javascriptでのシングルスレッド化のためであり、0に設定されていてもlongCB()にsetTimeoutを追加するだけで動作すると説明しました。イベントループ/イベントキューとコールスタックを見直した後、私はまだこれがうまくいかない理由を完全に忘れていますか?この行を使用しないでください。longCB()を呼び出す前に行をしてはいけませんか?私は何が欠けていますか?進んでいただきありがとうございます。
ありがとうございました。ほんとうにありがとう。私はそれをもっと研究するつもりですが、スレッドが正確に何であるか説明することができますか?単一のスレッドは、1つのブロックスコープですか? – user1842315
私はちょうどイベントループでPhilip Roberts基調講演を見ました。 https://www.youtube.com/watch?v=8aGhZQkoFbQ私は今、呼び出しスタックがクリアされているときにのみ実行できるレンダリングキューがあることを認識しています。 longCB()が呼び出しスタック上にあるので、ブラウザは#statusをテキスト 'hi'でレンダリングしません。ありがとうございました – user1842315
プログラミング言語のスレッドまたはプロセスは、通常、複数のコードが同時に実行されるのではなく、コード内を移動する単一の「カーソル」を意味します。混乱しないでください。スレッドは、メモリとプロセッサ時間のOS管理ブロックを参照することもできます。たとえば、Chromeでは、タスクマネージャに表示されるように、各タブごとに異なるプロセスがあります。プロセッサはスレッドと呼ばれることもある複数のコアを持つことができますが、それは非常に緩やかな言葉でそれを考えるようになりました。 –