2012-03-08 55 views
3

我有几行代码,我想要在Javascript中异步运行,以便它不会减慢我的主算法。看到这个伪代码:Javascript:如何编写一个将被异步执行的函数?

//main algorithm with critical code that should run as soon as possible 
... 
... 
runInParallel(function(){ 
    //time consuming unimportant code to shows some progress feedback to user 
    ... 
} 
//the rest of the time critical algorithm 
... 
... 
runInParallel(function(){ 
    //time consuming unimportant code to shows some progress feedback to user 
    ... 
} 
//and so on and so forth 

我搜索#2为如何使用JavaScript编写异步代码,但下面的问题是不是与我相似:

我想我可以使用计时器来达到此目的。我所需要的是函数runInParallel()的主体,如果可能的话,它可以有效地与我的主算法并行运行代码。任何人?

+0

较低优先?我怀疑是否有这种方式 – 2012-03-08 08:53:17

+2

搜索网络工作者 – user123444555621 2012-03-08 08:53:37

回答

5

Javascript没有同步/线程管理。如果你想异步执行某些东西,你可以使用setTimeout结合回调函数完成时得到通知。

var asyncHandle = setTimeout(function() { asyncCode(); callback(); }, 10); 

asyncHandle可以用来取消函数被调用之前的超时。

+0

这些方法已经相当过时,从引入网络工作者(请参阅我的文章)。 – 2012-03-08 09:02:43

+2

我不同意。为什么要限制对支持HTML 5的客户端的支持以实现这样的小事? – 2012-03-08 09:05:12

+0

有人可能会争论有关采用网络标准作为强制接受浏览器供应商的手段,但这是一个完整的其他问题。 – 2012-03-08 09:15:57

2

如果您的目标是支持HTML5的浏览器,请使用HTML5 Web Workers

你也可以尝试这个有趣的,但很旧的JavaScript compiler,允许为此目的的语言扩展。

相关问题