await populartimes(markers[i].placeID)
.then(out => {temp = 'Currently ' + out.now.currently + ' full.'})
.catch(out => {temp = 'Live data is not currently available. Historically, ' + markers[i].name + ' would be ' + out.now.usually + ' full.'})
.catch(out => {temp = 'There is currently no data available.'});
내 첫 번째 .catch 문이 이번에는 다른 변수를 확인하는 것을 제외하고는 첫 번째 반환 된 데이터를 다시 사용하도록 만들려고합니다 (.then 문에서 확인되는 now.currently가 아닌 현재). 어떻게해야합니까? 나는 이것을 작성했지만 첫 번째 .catch에 전달 된 출력은 .then의 오류 문일 뿐이라고 확신합니다.
TIA!
불행히도 약속은 오류가 발생한 후 데이터 값을 커리하지 않습니다. 이미 하나의 임시 변수를 사용하고 있는데 두 개가 아닌 이유는 무엇입니까? :
var temp;
var out!: any;
await populartimes(markers[i].placeID)
.then(value => {
out = value;
temp = 'Currently ' + out.now.currently + ' full.';
})
.catch(() => {
temp = 'Live data is not currently available. Historically, ' + markers[i].name + ' would be ' + out.now.usually + ' full.';
})
.catch(() => {
temp = 'There is currently no data available.';
});
그러나 나는 약속 처리와 await 문을 혼합하는 데 신중할 것입니다. populartimes
비동기 함수 인 경우 코드가 예상대로 작동하지만 프라 미스를 반환하는 일반 함수 인 경우 코드에서 오류가 발생할 때 케이스를 처리하지 않습니다 (프로 미스를 반환하는 함수는 프라 미스를 거부하거나 오류 발생).
만 사용 await
하고 try/catch
코드는 다음과 같습니다.
var temp;
try {
var out = await populartimes(markers[i].placeID);
try {
temp = 'Currently ' + out.now.currently + ' full.';
} catch {
temp = 'Live data is not currently available. Historically, ' + markers[i].name + ' would be ' + out.now.usually + ' full.';
}
} catch {
temp = 'There is currently no data available.';
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다