我需要创建一个地理位置变量并将值发送到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编辑了我的答案,以便更清楚 –