ホームページ  >  記事  >  ウェブフロントエンド  >  JS タイマーとシングルスレッドの非同期機能

JS タイマーとシングルスレッドの非同期機能

不言
不言オリジナル
2018-07-07 10:05:001785ブラウズ

この記事では主に JS タイマーとシングルスレッドの非同期機能を紹介します。これは、必要な友達に参考にしてもらえるように共有します。 BOM メソッドとタイマーは、設定された時間内にコードを実行するか、指定された時間間隔内でコードを繰り返すために使用されます。具体的な機能:

setTimeout(callback, delay);//delay一定的时间后,执行回调函数只执行一次
setInterval(callback, delay);//每隔一段时间执行一次callback,反复执行
clearInterval(timer);//清除定时

タイマーは確かにとても使いやすいですが、使いにくいのはなぜですか?
JSはシングルスレッドであるため、スレッドがブロックされやすいことがわかっています

? --非同期です!

もちろん、JS はシングルスレッドであり、非同期にすることはできませんが、JS のホスト環境 (ブラウザー、ノードなど) は、何らかの方法 (ノードのイベント ドライバーなど) で JS をマルチスレッド化できます。特徴。
なぜ突然シングルスレッドの非同期 JS について話しているのでしょうか?タイマーイベントはJSで非同期処理されることになるのですが、これはどういうことなのでしょうか?
コード内:

var num = 1;
setTimeout(function() {
    num++;
    console.log(num);
}, 1000);
console.log(num); //结果并是不(2,1)而是(1,2)

これはなぜですか?前述したように、JS はタイマー イベントを非同期に処理します。つまり、次のコードを実行する前にタイマー イベントが処理されるのを待たず、タイマー イベントをイベント キューに直接挿入します。以下

。タイマー イベントが完了すると、JS は方向転換してタイマー イベント コードのコールバック部分を実行します。これは非同期です。

非同期は、JS スレッドのブロックを効果的に防ぐことができ、非常に効率的になるため、限られたリソースで JS がより多くのことを実行できるようになります

これは素晴らしいことです。 (ノードでは多くの非同期の問題にさらされることになります)

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

JS 非同期プログラミング - Promise、Generator、async/await

JS 非同期プログラミングの概要

以上がJS タイマーとシングルスレッドの非同期機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。