javascript - jsで同期メソッドの実行時間を検出する方法はありますか?
迷茫
迷茫 2017-06-15 09:23:26
0
5
869

具体的には、同期メソッドの実行時間を検出できるメソッドはありますか? 実行時間が長すぎる場合は、率先してこのメ​​ソッドを強制終了します。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全員に返信(5)
typecho

これは同期方法によって異なりますか?

  • それがサードパーティのライブラリによって提供されるメソッドである場合、それ自体が stop メソッドを提供するかどうかによって異なります。そうでない場合は、何もできません。

  • ファイル i/o/delete/create が関係する場合は、それを停止できない場合がありますが、エラーが報告された後に元の状態に戻す逆関数を作成することはできます

  • このメソッドが自分で作成され、複数のサブ関数がある場合は、関数内でタイマーを定義し、各サブ関数を実行する前に時間が許容値を超えているかどうかを確認できます。これは回避策です。

  • このメソッドが自分で作成したもので、ステップが 1 つしかない場合は、時間のかかるメソッドであるため、おそらくループが発生するため、ループするたびに時間を確認しても問題ありません。 。 。
いいねを押す +0
世界只因有你

JS の観点から見ると、同期メソッドを実行すると、アプリケーション全体がその中でブロックされます。このとき、setTimeout によって非同期的にトリガーされたコールバックであっても、同期メソッドの実行が完了した後にのみイベント ループで実行できます。そのため、同期メソッドでは実行できません。自身の実行時間を確認し、自身を強制終了してください。

コンピューターサイエンスの観点から見ると、尋ねられる質問は実際には古典的な停止問題です:

停止問題(英語: halting問題)とは、論理学および数学における計算可能性理論の問題である。平たく言えば、停止問題とは、プログラムが制限時間内に動作を終了できるかどうかを判断する問題です。この問題は、プログラム P が存在するかどうかの判定問題と等価です。入力された任意のプログラム w に対して、w は制限時間内に終了するか、無限ループするかが判断できます。

この問題は NP 困難です。これは、この問題を直接解決できる、許容可能な時間計算量を備えたアルゴリズムが存在しないことを意味します。

しかし、学術的なアルゴリズムを超えて見ると、Web Worker や PM2 などのプロセス管理メカニズムの使用など、エンジニアリングでは多くの回避策がありますが、ここでは説明しません。

いいねを押す +0
刘奇

それならマルチスレッドするしかない…
http://www.w3school.com.cn/ht…
でもjsをどうやってkillするのかも謎…
結局…直接できます非同期を使用したほうが良いでしょうか||||

いいねを押す +0
黄舟

リーリー

これは確かに解決策ではないことを思い出しました。別のローエンドの解決策はこれだけかもしれません。 リーリー

必ずしもすべてのビジネスに適しているわけではなく、ドット自体がプロセスを遅くします。

いいねを押す +0
女神的闺蜜爱上我

Webworker は別のスレッドで計算ロジックを実行でき、onmessage メソッドは実行結果を受け入れることができ、terminate
メソッドは Webworker の実行を終了できます

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!