在 Angular 12 TypeScript 中设置超时后调用函数?

Call function after set timeout in Angular 12 TypeScript?

我想在设置超时过程后使用 saveAsDraft 函数。但是我得到一个错误。我用这个做什么?回调、承诺或...

  export class EditBlogComponent implements OnInit {
    ...
    //For draft save
    typingTimer:any;
    doneTypingInterval = 5000;
    ....

    saveAsDraft(blog:Blog) {
       console.log("Taslak kaydediliyor.", this.blog);
    }

    draftSecond(formValue: string) {
        clearTimeout(this.typingTimer);
        this.typingTimer = setTimeout(saveAsDraft(this.blog), 
        this.doneTypingInterval);
    }
  }

图片;

您对 saveAsDraft 的调用应该在函数内部。

语法是-

setTimeout(function(){ ... }, timeInMilliseconds);

所以你的电话应该是-

setTimeout(function(){
     saveAsDraft(this.blog);
}, timeInMilliseconds);

此外,只需检查 thisfunction() 中是否可用。可能不是。所以你可以像 -

var refToThis = this;
setTimeout(function(){
     refToThis.saveAsDraft(refToThis.blog);
}, timeInMilliseconds);

或者使用箭头函数

setTimeout(()=>{
     this.saveAsDraft(this.blog);
}, timeInMilliseconds);

没有 this 就无法访问 saveAsDraft,因为它是 class 成员,只能使用其对象访问。