如何使setInterval等到另一个完成?

时间:2018-04-16 18:48:31

标签: javascript jquery canvas html5-canvas

当我点击"一个"链接,让第二个计数器等到第一个计数器结束,然后计数到14(按照第155行的指示)?

https://jsfiddle.net/c4khk69f/27/

负责" one" link是第43行的函数progressSim()。

$('a').on('click', function(e) {
  e.preventDefault();

        jQuery('.canvasmotherwrap').hide();
        jQuery('.canvasmotherwrap').fadeIn();     


        al = 0;
        al2 = 0;    

  window.clearInterval(sim1_1);
  window.clearInterval(sim1_2); 
  window.clearInterval(sim2);       

  var storedata = $(this).attr('data');

  console.log(storedata)
  window[storedata]();
});
var sim1_1;
var sim1_2;
var sim2;   


window.one = function() {

  sim1_1 = setInterval(progressSim, 10);
  sim1_2 = setInterval(progressSim, 1000);  
}


window.two = function() {

  sim2 = setInterval(progressSim2, 10);
}   

1 个答案:

答案 0 :(得分:0)

我不完全确定我明白你的意思,但我认为你需要两个计数器,而且当第一个"第一个"一个已经完成,然后第二个应该开始并计入" 14"。

我希望这会有所帮助:



function doWork(targetDiv, startTime, countTo, onDone) {
    var ticker = setInterval(function(){
        diff = (((Date.now() - startTime) / 500) | 0);
        targetDiv.innerText = diff;
        if(diff < countTo){ return; }

        clearInterval(ticker);
        if(typeof(onDone) === 'function') { onDone(); }
    }, 100);

}

var divFoo = document.getElementById("foo");
var divBar = document.getElementById("bar");

// your on "click"
doWork(divFoo, Date.now(), 5, function(){
    doWork(divBar, Date.now(), 14);
});
&#13;
<table><tr>
    <td><div id="foo">0</div></td>
    <td><div id="bar">0</div></td>
</table>
&#13;
&#13;
&#13;