2
  1. Javascript は設計上、同期ブロッキング IO を思いとどまらせたり、許可したりしませんか?
  2. Javascript にスリープ API がないのはなぜですか? 上記の点によるものでしょうか。
  3. ブラウザは、javascript を実行する複数のスレッドを持つことができますか? なぜ常にシングルスレッドなのですか?

上記の点 (ブラウザーの制限による) により、javascript はサーバー側のノンブロッキング言語として理想的な言語になりますか?

4

1 に答える 1

0

ブラウザーは、1 つのスレッドでのみ Javascript を実行します (少なくともドメインごとで、Web ワーカーを除く)。
これは主に単純化のためです。最近まで、誰も Javascript 用のスレッド API を作成していませんでした。

ブラウザーをより簡単に (そしてより速く) 記述できるようにするために、このスレッドはブラウザー UI スレッドです。したがって、Javascript で同期作業 (またはスリープ呼び出し) を行うと、ブラウザーがフリーズします。
これが、同期操作が強く推奨されない理由です。

于 2012-09-25T14:43:48.993 に答える