Javascript:如何编写异步执行的函数?

Javascript:如何编写异步执行的函数?,javascript,multithreading,asynchronous,web-worker,Javascript,Multithreading,Asynchronous,Web Worker,我有几行代码要在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

我有几行代码要在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
我搜索了Stackoverflow以了解如何用Javascript编写异步代码,但以下问题与我的问题不同:

  • :关于服务器端
  • :关于加载源代码

我想我可以用定时器来实现这个目的。我想要的只是函数runInParallel()的主体,如果可能的话,它可以以较低的优先级高效地与我的主算法并行运行代码。有人吗?

Javascript没有同步/线程管理。如果希望异步执行某项操作,可以将
setTimeout
与回调结合使用,以便在函数完成时收到通知

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

asynchHandle
可用于在调用函数之前取消超时

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


您也可以尝试这个有趣但非常古老的方法,它允许为此目的进行语言扩展。

优先级较低?我怀疑是否有这样一种方式,这些方法已经相当过时了,比如从引入web工作者(见我的帖子)开始。我不同意。你为什么要把支持HTML 5的客户端限制在如此琐碎的事情上呢?有人可能会争论采用web标准作为强制浏览器供应商接受的手段,但这是一个完全不同的问题。我同意有些东西是必须给予的,但大多数web不是HTML 5,所以最后,我想你会通过限制用户而不是强制执行一些标准来伤害你的应用程序。我们对运行时环境有严格的控制,我们有HTML5。但我认为网络工作者对于我们目前面临的问题来说太大了。目前,我认为这个setTimeout()可以完成这项工作。然而,我同意,如果我们的问题扩大,网络工作者可能是最终的答案。