gpt4 book ai didi

Angular 2 - 在继续之前等待 promise

转载 作者:太空狗 更新时间:2023-10-29 18:25:37 26 4
gpt4 key购买 nike

我需要创建一个地理位置变量并将值发送到 API,但我遇到了麻烦。

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 设置完毕。

我进行了一些谷歌搜索,得到了应有的 promise ,但是我在编写语法时遇到了问题,我找不到任何有效的示例。

如何正确编写我的代码,以便在我的函数继续到 API 之前必须先设置 geoLoc?

最佳答案

根据 this , getCurrentPosition 方法返回一个promise,所以你只需要订阅它。

类似的东西:

navigator.geolocation.getCurrentPosition(
pos=>{
var crd = pos.coords;

console.log('Your current position is:');
console.log(`Latitude : ${crd.latitude}`);
console.log(`Longitude: ${crd.longitude}`);
console.log(`More or less ${crd.accuracy} meters.`);
},
onError=>{
...Catch errors...
}
);

关于Angular 2 - 在继续之前等待 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42721123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com