복귀와 아약스 약속/다른 블록 :경우, 나는이처럼 보이는 <code>if/else</code> 블록이
Prefablyif (this.getSessionStorageData()) {
this.initialData(this.getSessionStorageData());
} else if (this.shouldPerformXHR) {
this.loadXHRData();
}
내가 선택적으로,이 블록을 확장 아마도 switch 문에 조금을 만드시겠습니까
let data = [];
if (this.getSessionStorageData()) {
data = this.getSessionStorageData();
} else if (this.shouldPerformXHR) {
data = this.loadXHRData();
}
return data;
그러나 loadXHRData
은 AJAX 요청입니다. 이 예제에서 shouldPerformXHR
이 true이면 AJAX 요청이 완료되기 전에 데이터가 리턴 될 것이라고 추측합니다.
이제는 XHR 요청이 실제로 약속이므로 전화를 받고 then
을 사용할 수는 있지만 내 sessionStorage 데이터는 약속을 사용하지 않습니다.
내 두 번째 예제와 같은 데이터 구조를 가질 수는 있지만 내 약속이 있거나 불가능한 방법이 있습니까?
어떤 전략 (ajax, 세션 등)이든간에 데이터를 반환하는 방법이 필요합니다. 하지만 현재 아약스 요청의 .then
절에서 내 데이터를 설정해야하는 것처럼 보입니다.이 절은 저에게 논리가있는 곳으로 안내합니다.
바라기를 바랍니다.
잘 당신은 호출에서 반환 할 수 없습니다 getSessionStorageData가 약속을 되찾아 즉시 해결하도록 설정하십시오. – epascarello
"Promise.resolve"를 찾고 계십니다. 예, 항상 비동기로 함수를 처리해야합니다. – Bergi