JavaScript がプログラムの実行をブロックします
JavaScript スレッドの問題
JavaScript はシングルスレッドであり、 JS プログラムはプログラム プロセス全体を取り上げ、通常は非同期プログラミングを通じてプログラムのブロックを減らすためにあらゆる手段を試みますが、一部の特殊なシナリオではプログラムの実行をブロックする必要があるため、今日はその逆を行います。 Js の実行をブロックする通常の方法。
方法 1: 無限ループ
シングルスレッド JavaScript は、プログラムが計算を続ける限り、私たちにインスピレーションを与えてくれます。プロセス:
function sleep(d){ let t = Date.now(); while(Date.now() - t <= d); } function test() { console.log('sleep'); sleep(10000); console.log('run'); } test();
しかし、このメソッドは実際には、コンピューターのリソースを無期限に占有することにより、一時停止アニメーションの状態を引き起こします。大量の CPU を使用するため、プログラム プロセスを実際に停止しない限り、この方法はお勧めできません。
#メソッド 2: setTimeout
function test() { console.log('sleep'); setTimeout(function() { console.log('run'); }, 10000) } await
function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function test() { console.log('sleep'); await sleep(10000); console.log('run'); } test();
方法 3: ジェネレーターと yield
function sleep(time) { setTimeout(function () { test.next(); }, time); } function* gen() { console.log('sleep'); yield sleep(10000); console.log('10 second later'); } let test = gen(); test.next();
JS チュートリアル 」
以上がJavaScript ブロックの問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。