2013-06-20 25 views
2
self.showPanel(); 
self.updateSliderValue(); 

self.addPoints(1,2,3); 

self.setOptions(); 
self.removeValues(); 

addPoints方法將指向應用程序,它需要相當大量的時間,所以我想它在後臺運行和應用程序轉移到它下面setOptions等功能。請幫忙。如何得到一組js函數在後臺運行

回答

7

javascript是一個單線程應用程序,這意味着沒有什麼像運行的後臺線程。

你可以做的是主函數後運行功能addPoints完成後,您可以使用setTimeout

setTimeout(function(){ 
    self.addPoints(1,2,3); 
}, 0) 

這將推遲addPoints執行,直到當前的腳本執行結束了。

2

瀏覽器方面,你有一些選擇(假設客戶端由於jQuery的標籤存在)

首先,你也許能夠採取setImmediate的優勢:

https://developer.mozilla.org/en-US/docs/Web/API/window.setImmediate

其次,你可以使用定時器並將其分解,這是一個非常簡單的例子,如果你想處理更多的東西,只需將它們隨時都加入到thingstodoarray中。這方面的任何一個permuations。

int howoftentocheck = 60*1000; //60s 
    var thingstodoarray = []; 
    thingstodoarray.push("do this"); 

    function checkForStuffToDo(){ 
     if(thingstodoarray.length){ 
      //.. do things be sure and pop or shift the thing you did. 
     }else{ 
      setTimeout(function() { checkForStuffToDo() }, howoftentocheck) 
     } 
    }(); 

三,而不是輪詢您可以使用事件,因此註冊事件,使用jQuery或提供事件的一些其他圖書館說的,那麼你就可以解僱他們,當你想要做一些處理,使用。對和例如觸發器。

​​

我敢肯定還有其他幾個選項,但我們的目標是讓你的事件循環緊,這樣你就不會採取從用戶體驗了,等