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;
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.