Я создал проект на Ionic 4.5.0 с использованием машинописи 2.2.1.
В нем у меня есть два класса
file functions.ts
/* lots of import */
@Injectable()
export class Functions {
language: string;
}
file fooclass.ts
/* lots of import and import of functions.ts */
export class FooClass {
constructor(public functions: Functions) {
this.functions.language="ENG";
}
somefunction() {
console.log("1 - language: "+this.functions.language);
this.someotherfunction().then((response) => {
console.log("2 - language: "+this.functions.language);
})
console.log("3 - language: "+this.functions.language);
}
someotherfunction() {
return new Promise((resolve) => {
this.functions.language="ITA";
resolve("done");
}
}
Это распечатывает
1 - language: ENG
2 - language: ITA
3 - language: ENG
Я подумал, что использование жирной стрелки может связать окружение this, так что внесение изменений в переменную language в this.functions может выдержать обещание некоторой другой функции, но, похоже, это не так. Как я могу изменить переменный язык и сделать так, чтобы изменения остались вне обещания?
РЕДАКТИРОВАТЬ: теперь я понял, что проблема возникла после обновления с предыдущей версии ionic. Может быть, это не должно вести себя так, и это какая-то ошибка? (У меня есть предыдущая версия программного обеспечения, и она работает с тем же кодом)