2013-10-30 29 views
0

我想開發一個非常簡單的戰略遊戲。 你可以在http://wiesenberg.info/hope/找到一個例子!JavaScript回調 - 多線程

如果你點擊一個按鈕,該項目將被創建(進度條)。項目完成後,該項目將出現在操場上。正如你可以看到它的作品,如果你逐一點擊。但是,一旦你點擊一個按鈕兩次(開始2個同類型的項目),第二個項目就不會完成,因爲第一個項目沒有完成並增加了變量。有多線程簡單的方法或解決我的錯誤?

我也想添加一個函數,你可以通過點擊進度條來停止項目。我試了一下,它消失在列表中,但圖標仍然顯示,因爲該函數沒有得到執行另一個函數。所以我還需要進度條的休息功能。我希望你承擔我的問題!由於

繼承人的重要代碼:

function addSygehus() { 
    sygehusBarID++; 
    sygehusID++; 
    $("#addProject").append("<div id=sygehus" + sygehusID + 
      " class='progress progress-striped active'><div class='progress-bar progress-bar-success' id=sygehusbar" 
      + sygehusBarID + " aria-valuetransitiongoal='100'>Sygehus</div></div>"); 
    function countdown(callback) { 
     var bar = document.getElementById("sygehusbar"+sygehusBarID), 
       time = 0, max = firsttime, 
       int = setInterval(function() { 
      bar.style.width = Math.floor(100 * time++/max) + '%'; 
      if (time - 1 == max) { 
       clearInterval(int); 
       // 600ms - width animation time 
       callback && setTimeout(callback, 600); 
      } 
     }, 1000);        
    } 

    countdown(function() { 
     $("#sygehus" + sygehusID).remove(); 
     $("#sygehusPic" + sygehusID).show(1000); 

    }); 
} 
+1

Javascript只有一個線程,唯一的其他選擇是webworkers或異步行爲(這將很難用同步動作來僞造)。 – adeneo

+0

所以沒有解決方法?還有另一種做進度條的方法嗎?比這個倒計時更快的方法嗎? – Marc

+0

這不是關於多線程或任何事情的問題。它只是取消進度條的代碼的問題也做任何必要的清理(調用clearInterval,刪除任何div等)。然而,我們不能幫助你,沒有代碼來實現進度條。 – hugomg

回答

0

我想看看JQuery的遞延(http://api.jquery.com/jQuery.Deferred/),並承諾在文件一般管理您想要達到的目的。所以你可以對異步調用的順序進行一些控制。

你也有Q.js(https://github.com/kriskowal/q)是一個很好的庫,用於管理這些場景。

否則,您已經提到過網絡工作人員來模擬多線程行爲,但我不認爲這就是您要找的。