所以我承认,每次我学习闭包,我都不会使用它们而忘记。下面我将didGeoLocExecute
布尔变量设置为false。然后我创建一个超时。超时完成后,我会检查函数后面是否设置了didGeoLocExecute
。
是被设置,但在超时时,它保持为初始值。这是一个关闭问题,如果是这样,我该如何处理?
private getGeoLocation(): Observable<any> {
let locObs = new Observable ( observer => {
let didGeoLocExecute: boolean = false;
setTimeout(() => {
if(!didGeoLocExecute){
console.log('TIME OUT! ' + didGeoLocExecute);
observer.error();
}
}, 15000);
let position: GeoCoordinates;
this.location.getCurrentPosition().subscribe(
location => {
didGeoLocExecute = true;
observer.next();
},
error => {
didGeoLocExecute = true;
observer.error();
}
);
});
P.S。我很确定为了这个问题可以安全地忽略打字稿和可观察量。