setInterval in setTimout 在 angularjs 控制器中只触发一次
setInterval in setTimout only firing once in angularjs controller
正如标题所述,这似乎只触发一次。 我需要它持续运行。
控制器中的代码:
setTimeout(function () {
$scope.test();
console.log('starting test');
// check and update dates every minute (hopefully language will be in the bridge)
$scope.testInterval = setInterval($scope.test(), 1000);
}, 2000);
$scope.test = function () {
console.log('test');
};
控制台输出:
test
starting test
test
然后什么都没有。只是停止工作。
你在 setinterval 行中调用 scope .test()。您需要传递函数而不是函数的结果。
$scope.testInterval = setInterval($scope.test(), 1000);
成为
$scope.testInterval = setInterval($scope.test, 1000);
此外,由于 setInterval 在第一次触发时立即触发,因此在设置间隔之前不需要额外的 $scope.test()。
由于您正在调用该函数,因此您应该使用
$scope.testInterval = setInterval($scope.test, 1000);
这里应该注意的区别是$scope.test没有括号()
,因为您要调用此函数而不是此函数的执行返回值。
如果您已经编写了$scope.test()
它将返回未定义,并且您的间隔将不会运行(因为您的 setInterval 函数参数未定义)。如果您编写$scope.test
则间隔将调用测试函数。
使用 $interval
而不是 setInterval
。
var interval = $interval(function() {
console.log('say hello');
}, 1000);
如果要停止它:
$interval.cancel(interval);
相关文章:
- Javascript返回值只在循环中返回一次
- Jquery FadeIn FadeOut 只工作一次
- Javascript html每点击一次就会更改url
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- jQuery滚动功能只工作一次
- 刷新导致我的帖子“;张贴“;再一次
- 引导程序崩溃一次只能看到一个
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 加载器组件仅加载一次
- 根据Angular.JS上一次的内容禁用选择
- 一次又一次地在新的和相同的选项卡中打开一个url
- 只在宽度以下和宽度以上各准备一次
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- Angularjs:空对象,当只有一次点击时
- 在Angular应用程序中每个帖子投票一次
- 主干模型更改事件只触发一次
- 使用每500ms运行一次的jquery函数是个好主意吗
- setInterval in setTimout 在 angularjs 控制器中只触发一次
- jQuery - 如何滚动浏览子类 addclass 然后在一次迭代中删除类 setTimout 不起作用