Я пытаюсь проверить, существуют ли локально сохраненные данные и соответственно отобразить/скрыть части представления. Я делаю это, назначая истинным или ложным formMarkersDisplay так:Функция Promise Promise Issue
ionViewWillEnter() {
this.formMarkersDisplay = this.dataService.isNearMiss(this.appGlobal.getReportPrimaryKey());
}
Вот функция isNearMiss:
isNearMiss(pk) {
let sectionSevenObj : any;
this.getReport(pk).then((report) => {
if (report) {
sectionSevenObj = JSON.parse(report);
sectionSevenObj = sectionSevenObj.report.sections.section7;
if(Object.keys(sectionSevenObj).length != 0) {
this.is_markers = true;
} else {
this.is_markers = false;
}
}
});
return this.is_markers;
}
А вот getReport:
getReport(pk) {
return this.storage.get(pk);
}
Проблема заключается в том, что это .is_markers получает значение false, даже если я ожидаю true (что показано в console.log). Я изо всех сил пытаюсь поднять голову на работу с обещаниями. Я думаю, это может быть связано с этим.
Как изменить код, чтобы сделать эту работу?
Вы должны вернуть обещание, а не переменный он мутирует –
Есть другие проблемы в вашем коде также. Например, аннотация типа в этой строке не только бессмысленно, но и фактически препятствует тому, чтобы TypeScript ломал ошибки «let sectionSevenObj: any;». Похоже, вам нужно разобраться в своих основах JavaScript, учитывая странные вещи, которые вы делаете, такие как возврат значений, связанных с 'this' от методов на одном и том же объекте. –
Я очень новичок в JS/TS. Как я могу вернуться к обещанию? Я ищу фактическую версию моего кода, чтобы указать мне в правильном направлении. – Muhammad