在 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);
此外,只需检查 this
在 function()
中是否可用。可能不是。所以你可以像 -
var refToThis = this;
setTimeout(function(){
refToThis.saveAsDraft(refToThis.blog);
}, timeInMilliseconds);
或者使用箭头函数
setTimeout(()=>{
this.saveAsDraft(this.blog);
}, timeInMilliseconds);
没有 this
就无法访问 saveAsDraft
,因为它是 class 成员,只能使用其对象访问。
我想在设置超时过程后使用 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);
此外,只需检查 this
在 function()
中是否可用。可能不是。所以你可以像 -
var refToThis = this;
setTimeout(function(){
refToThis.saveAsDraft(refToThis.blog);
}, timeInMilliseconds);
或者使用箭头函数
setTimeout(()=>{
this.saveAsDraft(this.blog);
}, timeInMilliseconds);
没有 this
就无法访问 saveAsDraft
,因为它是 class 成员,只能使用其对象访问。