ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScriptタイマーベースの擬似スレッド

JavaScriptタイマーベースの擬似スレッド

William Shakespeare
リリース: 2025-03-06 01:26:09
オリジナル
163 人が閲覧しました

JavaScript Timer-Based Pseudo-Threading

以前の記事「JavaScriptの実行とブラウザの制限」は、主要なブラウザが長期にわたるJavaScriptコードを処理し、「反応しないスクリプト」エラーをトリガーする方法について説明しました。ブラウザの動作を変更することは実行不可能であり、サーバー側の処理が常にオプションではないため、タイマーはブラウザをフリーズすることなく長いタスクを実行するための実用的なソリューションを提供します。

javaScriptタイマーとは?

JavaScriptタイマーを使用すると、指定された遅延後にコード実行をスケジュールできます。 2つの主要な機能を提供します:

  • :提供された関数を1回setTimeout(function, msec[, arg1 … argN])ミリ秒後に実行します。 オプションの引数は、関数に渡すことができます。msec
  • setInterval(function, msec[, arg1 … argN])に似ていますが、キャンセルされるまでsetTimeoutミリ秒ごとに関数を繰り返し実行します。 msec
および

は、それぞれclearTimeout()およびclearInterval()操作をキャンセルするために使用されます。 たとえば、setTimeout setInterval

var timerID = setTimeout(myfunction, 500);
clearTimeout(timerID); // myfunction() will never be called
ログイン後にコピー
重要なメモ:

    および
  1. 関数を受け入れますsetTimeout参照setInterval(括弧なし)。 すぐに実行します setTimeout(myfunction(), 500);ミリ秒タイミングはおおよそです。 指定された遅延後にブラウザがアイドル状態にあるときに関数を実行します。 myfunction()関数の実行順序は保証されていません。
  2. first。
  3. を実行する可能性があります
  4. setTimeout(f1, 50); setTimeout(f2, 50);f2()タイマーベースの擬似スレッド

時限コードがすぐに実行されないため、ブラウザのメインスレッドは他のタスクに対して解放されます。これにより、長いプロセスを小さなチャンクに分解することができます。 たとえば、関数を実行するには、および

f1()f2()アレイから最初の要素(関数)を削除して返し、その後実行されます。 f3()配列内のすべての関数を実行し、それぞれ20msの遅延があります。 このアプローチは、ブラウザのタイムアウトしきい値を超えて単一の関数がない場合、任意の数の機能に対して機能します。 ただし、大規模なデータセットを処理するには、より堅牢な手法が必要であり、将来の投稿でカバーされます。

function ProcessThread(func) {
    var ms = 20;
    setTimeout(function() {
        func.shift()();
        if (func.length > 0) { //Improved condition check
            setTimeout(arguments.callee, ms);
        }
    }, ms);
}

ProcessThread([f1, f2, f3]);
ログイン後にコピー
よくある質問(FAQ)

func.shift() ProcessThread次のセクションでは、JavaScriptタイマーと擬似スレッドに関する一般的な質問に答えます。 元のFAQセクションは、明確さと簡潔さのために再編成され、書き直されました。 特定の例が簡素化されています

javascriptの擬似読み取りとは何ですか? ​​javascriptのシングルスレッドの性質とは、一度に1つのタスクを処理することを意味します。 擬似スレッドは、長いタスクをより小さな部品に分解し、タイマーで実行することでマルチスレッドをシミュレートし、ブラウザが他のタスクを処理できるようにします。

javaScriptタイマーはどのように機能しますか?遅延後に一度関数を実行しますが、setTimeout()は特定の間隔で関数を繰り返し実行します。 setInterval()

JavaScriptタイマーを使用して擬似スレッドを実装する方法は?

で停止します setInterval()pseudo-threadingの制限?clearInterval()真の並列実行を有効にしません。インターリーブブラウザータスクでは、タスクが順番に実行されます。 ゆっくりとしたチャンクが後続のものを遅らせる。

pseudo-threading vs.実際のスレッド(例:python)?pythonのマルチスレッドは、真の並列性を可能にしますが、人種のような複雑さを導入します。 JavaScriptの擬似スレッドはよりシンプルですが、CPUバインドタスクではパフォーマンスが低いです。

擬似スレッドの代替案(約束、async/await)?約束、およびは非同期操作に優れていますが、メインスレッドをブロックするCPUバウンドタスクではありません。

pseudo-threadを停止しますか?async/awaitを使用します

pseudo-threading and web Workers?clearInterval()Webワーカー内に擬似読み取り

を組み合わせて、パフォーマンスを向上させます。労働者はバックグラウンドで走ります。

擬似スレッドの実用的なアプリケーション?画像処理、複雑な計算、データ操作など。メインスレッドをブロックする可能性のあるもの。

擬似スレッディングのライブラリ/フレームワーク?

擬似スレッドに直接焦点を合わせていませんが、のようなライブラリは非同期操作の管理に役立ちます。 JavaScriptの組み込みタイマーは通常十分です

以上がJavaScriptタイマーベースの擬似スレッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート