2011-09-10 64 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的评论发生了很大变化。现在,您几乎可以在所有浏览器中使用网络工作者! –