2013-10-30 30 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)是一个很好的库,用于管理这些场景。

否则,您已经提到过网络工作人员来模拟多线程行为,但我不认为这就是您要找的。