我需要創建一個地理位置變量並將值發送到API,但我很麻煩。Angular 2 - 在繼續之前等待承諾
public virtualRegistrationHandler(e: any): void {
e.preventDefault();
console.log("loop");
if (navigator.geolocation) {
let geoLoc = navigator.geolocation.getCurrentPosition(this.setGeoLoc);
this.VirtualRegistrationService.virtualRegistration(geoLoc)
.subscribe(
response => this.toastyCommunicationService.addSuccesResponseToast(response),
error => this.toastyCommunicationService.addErrorResponseToast(error)
);
} else {
this.toastyCommunicationService.addErrorResponseToast("Geolocation is not supported by this browser.");
}
}
private setGeoLoc(position: any) {
console.log("Latitude " + position.coords.latitude, "Longitude " + position.coords.longitude);
let geoLoc = { "Latitude": position.coords.latitude, "Longitude": position.coords.longitude };
return geoLoc;
}
這是我當前的代碼,但它不會等待geoLoc
退換,所以現在它發送一個不確定的參數給API。
我想API調用等待直到geoloc
被設置。
我做了一些Google搜索,我來了accros的承諾,但是我在編寫語法時遇到了麻煩,我找不到任何工作示例。
如何正確編寫我的代碼,以便geoLoc在我的函數繼續到API之前必須先設置?
我認爲你是在正確的軌道上,但是' 「縱橫」:position.coords.latitude'它說它不知道'位置'是什麼,那麼我如何得到這個值呢? – Nicolas
resove函數應該包含一個位置類型的對象(https://developer.mozilla.org/en-US/docs/Web/API/Position)。 Iv'e編輯了我的答案,以便更清楚 –