Home > Mobile >  Call function after set timeout in Angular 12 TypeScript?
Call function after set timeout in Angular 12 TypeScript?

Time:11-14

I would like to use saveAsDraft function after set timeout process. But I get an error. What do I use for this? Callback, promise or ...

  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);
    }
  }

Image;

enter image description here

CodePudding user response:

Your call to saveAsDraft should be insider a function.

The syntax is -

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

So your call should be -

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

Additionally, just check if this is available inside the function(). It might not be. so you can do like -

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

or use arrow functions

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

You can not access saveAsDraft without this since that is a class member and can only be accessed using its object.

  • Related