当前位置: 首页 > 知识库问答 >
问题:

Angular 2-在setTimeout[duplicate]中使用“this”

韦熙云
2023-03-14

我班上有一个这样的函数

  showMessageSuccess(){

    var that = this;
    this.messageSuccess = true;

    setTimeout(function(){
      that.messageSuccess = false;
    },3000);

  }

我怎样才能重写它,这样我就不用在“that”var中存储对“this”的引用了?如果我在setTimeout中使用“this”,那么messageSuccess bool似乎不会更改/得到更新。

共有1个答案

邢和光
2023-03-14

您需要使用箭头函数()=>ES6特性在settimeout中保留this上下文。

// var that = this;                             // no need of this line
this.messageSuccess = true;

setTimeout(()=>{                           //<<<---using ()=> syntax
      this.messageSuccess = false;
 }, 3000);
 类似资料:
  • 在我的ServiceWorker中,我有以下代码: 如果单击主页中的按钮,则会向工作人员发送消息。这很好,我看到消息:和记录在控制台中。自身。setTimeout调用不会引发错误,但从不调用send_alert。 根据https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope实现窗口计时器,它实现设置超时

  • 我正在尝试返回在setTimout中计算的值。但好像我拿不出这个值。我读到要做到这一点,我必须用promise。我是否必须像下面这样使用它:https://italonascimento.github.io/application-a-timeout-to-your-promissions/?

  • 我们如何在setTimeout中使用。我在构造函数中声明了一个属性。我使用了inside它会抛出一个类似于 我试了很多,但不知道如何解决这个问题。为什么错了?请帮我解决这个问题。。

  • 我试图在EventEmitter上使用一些简单的操作符(来自FormModel.valueChanges),但我不知道应该如何实现。 EventEmitter类从Subject扩展而来

  • 本文向大家介绍javascript中setTimeout使用指南,包括了javascript中setTimeout使用指南的使用技巧和注意事项,需要的朋友参考一下 javascript中setTimeout使用指南 以上所述就是本文的全部内容了,希望大家能够喜欢。