执行一系列$ timeouts

时间:2014-08-19 02:08:00

标签: javascript angularjs

我正在使用AngularJS应用。该应用需要交替超时。这种交替由阵列处理。该数组看起来像[3000, 1000, 3000, 1000, 5000]

此数组表示运行操作三秒钟。然后,等一下。然后再运行三秒钟。然后再等一下。最后,运行另一个操作5秒钟。操作会有所不同。无论哪种方式,我都不确定如何按顺序执行它们。

如何在AngularJS中执行一系列$ timeout元素?

谢谢!

1 个答案:

答案 0 :(得分:0)

这听起来像是一个更好的自定义计时器,因为你需要跟踪时间,而不仅仅是延迟操作。

不知何故,您需要格式化数据,其中包含每个操作的运行量和暂停时间。像这样:

var operations = [{fun: oneFunction, wait: 1000, run: 3000}, {fun: twoFunction, wait: 2000, run: 5000];

然后你需要处理这些功能,并在各自的时间运行它们:

function handleOperations(operationArray) {
    for (var i = 0; i < operationArray.length; i++) {
         var start = Date.now();
         if ((Date.now()-start) <= operationArray[i].run) {
             operationArray[i].fun(); //run while the timer is still going
         } else {
             //otherwise, wait for specified time
             var waitStart = Date.now();
             if ((Date.now()-waitStart) <= operationArray[i].wait) {};
         }
    }

}