【问题标题】:AngularJS: how can I call a function after certain time interval?AngularJS:如何在一定时间间隔后调用函数?
【发布时间】:2016-04-05 04:17:12
【问题描述】:

我的场景是:

我想在我的应用中自动说 30 分钟后调用注销功能。这有可能实现这一目标吗?此外,我想知道用户最后一次与我的应用程序交互的时间。有人可以帮我解决这个问题吗?

【问题讨论】:

  • ng-idle 模块可以提供帮助
  • 使用 setInterval 是我希望的最好主意
  • @RahulKamboj, setInteval 将在一定的时间间隔后一次又一次地调用一个函数。如果它只被调用一次,那么setTimeout 就是那个。即使这在 Angular 的情况下也没有用,因为该函数将在 AngularJS 上下文之外执行,所以我认为 $timeout 是他需要使用的服务。
  • @Tech Kid,正如 Grundy 建议的那样,ng-idle 是负责处理不活动并提供回调以供使用的人

标签: javascript angularjs


【解决方案1】:

对于需要超时的任何功能,请使用以下内容。但我不会建议注销。更好的是,您可以在 30 分钟后使用浏览器会话注销。

$timeout(function() {
   // your code
}, 3000); // 3 seconds

【讨论】:

  • 感谢您的回答先生,我现在收到此错误Error: [$rootScope:inprog] http://errors.angularjs.org/undefined/$rootScope/inprog?p0=%24digest,您能帮我把我的这个$rootscope.synchronization() 功能变成这个Fiddle.. 中的服务或工厂供应商吗: (
【解决方案2】:

使用 setTimeout() 纯javascript函数,可以在一定时间间隔后调用

 setTimeout(function(){
    logout();
},5000)

【讨论】:

  • 这是调用一次函数还是在 5000 毫秒后重复调用?
  • 如果您的 logout() 更改了范围内的某些内容,这将不起作用。您必须将注销调用包装在 $scope.apply() 或使用 $timeout 隐式执行此操作
  • @Arkantos。非常感谢您的回答。先生,我现在收到这个错误Error: [$rootScope:inprog] http://errors.angularjs.org/undefined/$rootScope/inprog?p0=%24digest,你能帮我把我的这个$rootscope.synchronization() 功能变成这个Fiddle.. 中的服务或工厂供应商吗:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多