Я пытаюсь обновить строку (класса\tag) с помощью setimeout (или любого другого обратного вызова), без успеха, он отлично работает с кнопкой (когда пользователь нажимает кнопку для обновления), но это не так, t работать с настройкой JS. не могли бы вы рассказать мне, что мне здесь не хватает?
Вот пример кода, который у меня есть:
export class Page1 {
constructor() {
this.greet = "Hi, ";
setTimeout(function(){
this.greet = "Hello, ";
alert("Done");
}, 3000);
}
}
как вы можете видеть в этом простом коде, я вижу предупреждение "Готово" через 3 секунды, но приветствие не обновляется, нужно ли его каким-то образом обновить?
Спасибо за помощь!
Эран.
По-вашему, this
внутренний вызов callTimeout не является экземпляром класса Page1
. Для сохранения контекста вам необходимо использовать функцию стрелки:
setTimeout(() => { // <===
this.greet = "Hello, ";
alert("Done");
}, 3000);
См. Эту ссылку для получения более подробной информации https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Lexical_this