На данный вопрос уже ответили:
Вопрос находиться в комментариях к коду.
export default class Abstract {
construct(field = 'defaultField') {
this.field = field;
}
method() {
const promise = new Promise((resolve, reject) => {
resolve('newField');
});
promise.then(
(newField) => { this.field = newField; }
);
console.log(this.field); // defaultField - Почему? И как изменить this.field на newField?
// Получается я устанавливаю поле this.field для функции then?
}
}
Потому что console.log
— синхронная функция, а Promise — асинхронный. Вот и получается, что console.log
показывает тебе this.field
раньше, чем он успевает изменить своё значение
Пробуй так проверить сам:
// ...
method() {
const promise = new Promise((resolve, reject) => {
resolve('newField');
})
promise.then(newField => {
this.field = newField
console.log(this.field)
)
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно передать диву ширину, значение которой вычисляется в JS
Добрый вечер, прошу помощи! Есть линейный массив:
Всем хорошего настроенияПишу макрос в мазиле, использую Imacros и столкнулся с такой проблемой
Пользователь выбирает из select какой-то option, каждый option имеет какое-то значение (Например: 10000), потом вводит в input число , и значение в option умножается...