JS变量不会超时更改 - 关闭问题?

时间:2017-03-10 20:32:08

标签: javascript typescript closures

所以我承认,每次我学习闭包,我都不会使用它们而忘记。下面我将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。我很确定为了这个问题可以安全地忽略打字稿和可观察量。

0 个答案:

没有答案