2011-09-10 16 views
17

これはjavascriptによると「スレッド」ですが、コードは従来のスレッドモデルに適合していないようです。Javascript新しい「スレッド」を作成

スレッドのコンセプトに関してこのコードを明確にすることはできますか?

function test() { 
    alert("Test"); 
} 

// this creates a new "thread," but doesn't make much sense to the untrained eye 
setTimeout(test, 0); 

他の方法で分岐することはできますか?

答えて

27

基本的には、通常の流れからtestへの呼び出しを取るだけです。エンジンは、できるだけ早く、適合するときはいつでもこの関数を実行します。つまり、textを非同期にに実行しています。

コードをより明確にするために、あなたは同じことを意味のある名前の関数を作成することができます。あなたが本当のスレッドを持つようにしたい場合は

function executeAsync(func) { 
    setTimeout(func, 0); 
} 

executeAsync(function() { 
    alert("Test"); 
}); 

web workersを見ています。

+0

非同期で実行するだけで、スレッドは必要ありません。ありがとう! – skeggse

+2

WebワーカーはほとんどのWebアプリケーションのオプションではありません(リンクを参照)。基本的に、IE 10はそれをサポートする最初のバージョンです。 http://caniuse.com/webworkers –

+1

@ komma8.komma1のコメントから多くの変更がありました。ほとんどすべてのブラウザでWebワーカーを使用できます。 –