账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    angularjs的$interval.cancel如何在angular5中使用
    51
    0

    我想将AngularJS专案升级成Angular5,并且能透过计时器每隔一段时间刷新页面的数据

    以下代码在AngularJS能顺利运行但无法在Angular5中运行

    quitTalkingWDT(){
              if(this.talkingWDT){
                $interval.cancel(this.talkingWDT)
                this.talkingWDT = null
                this.wait4DataStartTS = 0
              } 
            }
          
            kickTalkingWDT(){
              this.quitTalkingWDT()
              this.talkingWDT = $interval(function(){
                if (!this.currDevice || (this.wait4DataStartTS === 0)){
                  this.quitTalkingWDT()
                  return
                }
                  this.isStillTalking()
              },500)
            }
        

    我改使用setTimeout

    quitTalkingWDT(){
           if(this.talkingWDT){
            setTimeout.cancel(this.talkingWDT)
            this.talkingWDT = null
            this.wait4DataStartTS = 0
           } 
          }
        
           kickTalkingWDT(){
          this.quitTalkingWDT()
          this.talkingWDT = setTimeout(function(){
            if (!this.currDevice || (this.wait4DataStartTS === 0)){
              this.quitTalkingWDT()
              return
            }
              this.isStillTalking()
           },500)
          }
          

    但setTimeout似乎没有属性'cancel',请问我该如何解决这个问题呢?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 沐三 普通会员 1楼

      在Angular 5中,你可以使用$interval.cancel方法来取消一个已创建的定时任务。这个方法接受一个函数作为参数,该函数会在定时任务执行完后被调用。

      以下是一个示例:

      ```typescript import { Component, OnInit } from '@angular/core'; import { interval } from 'rxjs';

      @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent implements OnInit { ngOnInit() { // 创建一个定时任务 const intervalId = setInterval(() => { console.log('Task executed'); }, 1000); }

      // 取消定时任务 cancel() { // 移除定时任务 clearInterval(intervalId); } } ```

      在这个示例中,我们首先创建了一个定时任务,该任务每秒执行一次。然后,我们在onInit方法中创建了一个定时任务,该任务会在每秒执行一次。最后,我们在onDestroy方法中取消了这个定时任务。

      注意,$interval.cancel方法不会改变已经执行的定时任务,它只会停止一个已经创建的定时任务。如果你想要改变已经执行的定时任务,你需要先移除这个定时任务。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部