2012-03-08 8 views
3

私はそれが私のメインのアルゴリズムを遅くしないようにJavaScriptで非同期に実行する数行のコードを持っています。この擬似コードを参照してください:Javascript:非同期で実行される関数を作成するにはどうすればよいですか?

//main algorithm with critical code that should run as soon as possible 
... 
... 
runInParallel(function(){ 
    //time consuming unimportant code to shows some progress feedback to user 
    ... 
} 
//the rest of the time critical algorithm 
... 
... 
runInParallel(function(){ 
    //time consuming unimportant code to shows some progress feedback to user 
    ... 
} 
//and so on and so forth 

を私はJavaScriptでの非同期コードを書く方法についてはStackOverflowのを捜索したが、以下の質問は私に似ていない。

私はこの目的のためにタイマを使用することができますね。私が望むのは、できるだけ優先順位を低くしてメインアルゴリズムと並行して効率的にコードを実行する関数runInParallel()の本体です。誰でも?

+0

低い優先順位?私はそのような方法があるとは思わない –

+2

Webワーカーを検索 – user123444555621

答えて

5

Javascriptがまったく同期/スレッド管理を持っていません。あなたが非同期的に何かを実行したい場合は、関数の完成通知するコールバックと組み合わせsetTimeoutを使用することができます。

var asyncHandle = setTimeout(function() { asyncCode(); callback(); }, 10); 

asyncHandle前呼び出される関数にタイムアウトをキャンセルするために使用することができます。あなたはHTML5サポートしているブラウザをターゲットに設定している場合

+0

これらのメソッドは、Webワーカーの紹介(私の記事を参照)からかなり古くなっています。 –

+2

私は同意しません。なぜあなたはHTML5対応クライアントにあなたのサポートを制限するべきなのですか? –

+0

ブラウザのベンダーによる承認を強制する手段としてのWeb標準の採用について議論することができますが、これはまったく別の問題です。 –

2

HTML5 Web Workersで行きます。

また、この目的のための言語拡張を可能にするJavaScript compilerこの興味深いが、かなり古いを試すことができます。

関連する問題