“创建新的Javascript”;“线程”;

“创建新的Javascript”;“线程”;,javascript,asynchronous,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); 是否有其他方法进行分支?您基本上只是在正常流程之外调用test,引擎将在合适的时候尽快执行该功能

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

关于线程的概念,是否有可能使代码更清晰

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

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

是否有其他方法进行分支?

您基本上只是在正常流程之外调用
test
,引擎将在合适的时候尽快执行该功能。这意味着,您正在异步执行
test

为了使代码更清晰,您可以创建一个具有有意义名称的函数,其作用与此相同:

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

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

如果您想拥有真正的线程,请看一看。

我只需要异步运行,线程不是必需的。谢谢Web workers不是大多数Web应用程序的选项(请参见链接),基本上,IE10是支持它的第一个版本。自从@komma8.komma1发表评论以来,情况发生了很大变化。现在,您可以在几乎所有浏览器中使用web workers!但是测试函数的执行将在主线程上进行,因此如果您的测试有一些繁重的代码,您的服务器或应用程序将挂起。超时的计时仅以异步方式进行。我认为,就线程而言,workes将是最紧密的。