如何在同一时间使用différentsJS函数

时间:2017-12-04 12:10:29

标签: javascript jquery function

我希望在点击按钮的同时启动多个功能。

事情很灵敏,因为它是发射定时器,如果它们不同步,那么微小的差异立即可见......

实际上我使用这段代码:

<button class="btn btn-success startTimer" id="gobutton">Start</button>

    <script type="text/javascript">
        $(".startTimer").click(function() {
            var timeseconds = $("#MoneyTimer").TimeCircles().getTime(); 
            $("#timeseconds").val(timeseconds);
            $("#MoneyTimer").TimeCircles().start();
            $('#totaleuro.compteur1').timer1('start');
            $('#totaleuro.compteur2').timer2('start');
        });
    </script>

2 个答案:

答案 0 :(得分:0)

常规浏览器内的Javascript为strictly single threaded ,因此 nothing 会在同一时间启动。事实上,两个函数中的一个只会启动,如果另一个完成(或遇到一个承诺,或......)

你最好,唯一的赌注就是调查web workers - 其性能和可能的多线程可能会因实现而异。不过,更多的是猜测,完全平行是不可保证的。 (另外,因为处理器现在可能还有其他东西要做......)

可能是您实际问题的更好解决方案:

也就是说,你的两个计时器都可能与同一个开始时间相关,设置一次并在全局变量(或passed in an object)中共享。

遗嘱仍然永远不会在同一时间真正并行运行,但无论何时轮到他们(更新显示信息,指标等等),他们都将根据exakt相同的开始进行计算 - 时间。

答案 1 :(得分:0)

您可以使用setTimeout函数。它的回调是异步执行的。

<script type="text/javascript">
    $(".startTimer").click(function() {
        var timeseconds = $("#MoneyTimer").TimeCircles().getTime(); 
        setTimeout(function() {$("#timeseconds").val(timeseconds);}, 0);
        setTimeout(function() {$('#totaleuro.compteur1').timer1('start');}, 0);
        setTimeout(function() {$('#totaleuro.compteur2').timer2('start');}, 0);
    });
</script>