2012-03-08 89 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,允許爲此目的的語言擴展。

相關問題