当前位置:  开发笔记 > 编程语言 > 正文

传递此错误的TypeScript setTimeout循环

如何解决《传递此错误的TypeScriptsetTimeout循环》经验,为你挑选了2个好方法。

尝试在TypeScript中创建一个计时器循环:

timeout() {
    setTimeout(function () {
        console.log('Test');
        this.timeout();
    }, 1000/60);
}

但是在第一个循环正常工作后我得到了这个错误:"未捕获的TypeError:this.timeout不是函数".看起来这个变量在初始循环后不存在.有任何想法吗?



1> Suren Srapya..:

因为你this没有引用该对象.每个功能都有自己的功能.所以你this的内容是由匿名函数定义的setTimeout().

要使程序正常工作,您需要this在超时之前保持并使用该变量.

class Test {
  
  timeout() {
      var that = this;
      setTimeout(function () {
          console.log('Test');
          that.timeout();
      }, 1000/60);
  } 
  
}


let t = new Test();
t.timeout();


2> Smiranin..:

因为这种背景丢失了.使用箭头功能这是更好的.

timeout() {
    setTimeout(() => {
        console.log('Test');
        this.timeout();
    }, 1000/60);
}

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有