【发布时间】:2016-01-19 20:58:37
【问题描述】:
我正在使用 AngulaJs 和 Ionic。
我试图每 3 秒调用一次函数,只调用 10 次(这就是我不使用 $interval 的原因)。问题是,下面的代码只调用了一次函数(而控制台的调试代码被调用了 10 次)。
for (i = 0; i < 10; i++)
{
$timeout(function () {
$scope.play(); // this is the called function
console.log("progress bar: " + i);
}, 3000);
}
任何帮助将不胜感激,
提前致谢,
帕古吉姆
【问题讨论】:
-
您发布的代码没有问题。您必须在
$scope.play()中进行阻止操作,因为我的 plunker 运行良好:plnkr.co/edit/izZvfrLrGxmLD5n0AnYS?p=preview。注意:您正在做的事情不会有您认为的结果。它将快速创建 10 次迭代,每次超时等待 3 秒并同时解决它们,因为 $timeout 返回一个承诺并且不会阻塞。这应该是一个递归操作,如下迈克所述。 -
不,这是不对的......将在每个循环中添加许多计时器,这些计时器将同时触发。循环将在毫秒内完成
-
@charlietfl 虽然这是真的,但 OP 明确表示“下面的代码只调用了一次函数”,这是一个不真实的说法。它将同时被调用 10 次。
-
您好,非常感谢您的快速回复(-: