Angular2: setTimeout仅被调用一次

6

我正在实现一个需要使用 setTimeout 的 Angular2 功能。

我的代码:

  public ngAfterViewInit(): void {
    this.authenticate_loop();
  }

  private authenticate_loop() {
    setTimeout (() => {
      console.log("Hello from setTimeout");
    }, 500)
  }

setTimeout 是由 ngAfterViewInit 启动的,但循环只执行一次,例如: "Hello from setTimeout" 只打印一次。

问题:我该如何更改代码使得 setTimeout 起作用?


1
因为超时只运行一次... - epascarello
您可以在 http://blog.neilni.com/2016/03/27/settimeout-in-angular-2/ 上查看。 - yunus kula
请将您的问题编辑为Angular 1,而不是Angular 2,因为您已经接受了一个使用Angular 1服务的答案。 - dlcardozo
没错,没有注意到。现在已经接受了正确的答案。 - Vingtoft
2个回答

11
 private authenticate_loop() {
    setInterval (() => {
      console.log("Hello from setInterval");
    }, 500)
 }

setTimeout 只会运行一次,除非你创建另一个 setTimeout


3

编辑:更具体地说,对于不同的Angular版本:

Angular2中,您不再需要使用$timeout / $interval。因此,在这里提问,setInterval是正确的解决方案。

对于任何对原始响应(针对Angular1)感兴趣的人,请阅读以下内容:

在angular.js应用程序中使用$interval

如果您想在angular.js应用程序的其他位置使用setTimeout,则最好使用$timeout服务。

$timeout$interval有一个优点,它们可以保持您的作用域更新,而setTimeout / setInterval则不能。


2
你的答案是正确的,但所使用的示例是Angular1。 - Vingtoft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接