2011-09-10 70 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的評論發生了很大變化。現在,您幾乎可以在所有瀏覽器中使用網絡工作者! –