로컬로 저장된 데이터가 있는지 확인하고 이에 따라 뷰의 일부를 표시/숨기려고합니다. 그래서 같은 formMarkersDisplay하는 참 또는 거짓을 할당하여이 작업을 수행 : getReportTypeScript 약속 함수 문제
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;
}
그리고 여기에 있습니다 : :
여기ionViewWillEnter() {
this.formMarkersDisplay = this.dataService.isNearMiss(this.appGlobal.getReportPrimaryKey());
}
가 isNearMiss 기능입니다
getReport(pk) {
return this.storage.get(pk);
}
문제는이 때문이다 .is_markers는 true (Console.log에 표시됨)가 예상 되더라도 false로 설정됩니다. 나는 약속을 가지고 일하는 것을 두려워하고있었습니다. 나는 이것이 이것과 관련이있을 것이라고 생각한다.
이 코드를 수정하려면 어떻게해야합니까?
수정하지 변수는 –
코드에서 다른 문제가있다 변이합니다 게다가. 예를 들어,이 라인의 타입 주석은 무의미 할뿐만 아니라 TypeScript가 실수로 'let sectionSevenObj : any;'를 잡는 것을 방지합니다. 동일한 객체의 메서드에서 'this'에 바인딩 된 값을 반환하는 등의 이상한 일을 감안할 때 JavaScript 기본 사항을 브러시로 처리해야합니다. –
JS/TS에 매우 익숙합니다. 약속을 되 돌리려면 어떻게해야합니까? 내 코드의 실제 개정판을보고 올바른 방향으로 나를 가리키고 있습니다. – Muhammad