【问题标题】:Call a function every X seconds每 X 秒调用一次函数
【发布时间】:2018-05-24 08:51:27
【问题描述】:

有没有办法在 Angular 2+ 中每 X 秒或每分钟触发一次函数?

例如,如果我想每 60 秒从我的主 app.component 启动一个 myService.refreshloginStatus() 函数怎么办?

我发现this question 在互联网上搜索,但我不知道它是否也适用于此以及如何在 Angular 中实现它...有人可以提供我在 Angular 中的具体用法吗?

PS:如果您认为这个问题可能与链接问题重复,请在 cmets 中告诉我,我必须将其删除

【问题讨论】:

  • 该副本在 Angular 中可以正常工作
  • 您可以使用 Observable 中的计时器在一定间隔后调用服务。
  • 基本上constructor() { setInterval(()=> { this.myFunc() }, 60000); }
  • Angular 使用 Typescript,它只是 javascript 的超集。你在你的 Angular 文件中编写普通的 JS,它会工作得很好

标签: angular typescript


【解决方案1】:

你可以使用setInterval()函数

setInterval(()=> { this.myFunc() }, timeIntevalSeconds * 1000);

【讨论】:

    【解决方案2】:
    const reloadInterval = 60;
    
    timer(0, reloadInterval).pipe(
      mergeMap(_ => this.myService.myHttpCall())
    ).subscribe()
    

    那就是回答你的问题。但老实说,我认为从组件中执行此操作不是一个好主意,您应该直接从您的服务中执行此操作。

    另外,如果您正在寻找更高级的答案,您可以查看here。

    【讨论】:

    • 谢谢!我已接受您的回答作为最完整的回答,其中大部分是因为您建议在服务内执行此操作!它工作正常!顺便说一句,我将您的答案与上面的@luk-alex one 和@Ivaro18 评论融合在一起,因此我获得的(工作)结果是:constructor() { setInterval(()=> { this.myFunc() }, 60000); } 在我的服务中!你的答案也很好,但我更喜欢使用更简单的代码!
    【解决方案3】:

    var intervalPromise;
    $scope.startTimer = function(fn, delay) {
        intervalPromise = $interval(function() {
            fn();                  
        }, delay);
    };
    
    $scope.startTimer(hello, 2000);
    
    hello(){
      console.log("hello");
    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-28
      • 2019-04-08
      • 2012-03-14
      • 2011-11-06
      • 2011-03-09
      • 1970-01-01
      • 2020-03-27
      相关资源
      最近更新 更多