Javascript创建新的"线程"

ske*_*gse 25 javascript asynchronous

根据javascript,这是一个"线程",但代码似乎不适合传统的线程模型.

关于线程的概念,是否可以使这个代码更清晰?

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

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

还有其他方法可以分支吗?

Fel*_*ing 32

您基本上只是将呼叫test从正常流程中取出,并且引擎将尽快执行该功能.这意味着,您正在test 异步执行.

为了使代码更清晰,您可以创建一个具有有意义名称的函数,该函数执行相同的操作:

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

executeAsync(function() {
    alert("Test");
});
Run Code Online (Sandbox Code Playgroud)

如果你想拥有真正的线程,请看看网络工作者.

  • 自@ komma8.komma1发表评论以来,情况发生了很大变化.现在,您几乎可以在所有浏览器中使用Web worker! (4认同)
  • Web工作者不是大多数Web应用程序的选项(参见链接)基本上,IE 10是第一个支持它的版本.http://caniuse.com/webworkers (3认同)