javascript中代码的执行顺序 - navigator.geolocation

时间:2017-01-27 01:04:47

标签: javascript jquery

所以我在使用navigator.geolocation获取经度和纬度时遇到了问题,并将其存储在全局变量中。我在不同的地方使用警报来检查javascript代码的流程。我发现顺序为1,2,4和3.为什么会这样?我真的很困惑。

 $(document).ready( function() {
      var latitude;
      var longitude;
      alert('1');
      if(navigator.geolocation){
        alert('2');
            navigator.geolocation.getCurrentPosition( function(position){
              alert('3');
              latitude = position.coords.latitude;
              longitude = position.coords.longitude;
              geoCoords(latitude, longitude);


            });
         }

      alert('4');

    });

1 个答案:

答案 0 :(得分:4)

navigator.geolocation.getCurrentPosition是异步的 - 作为参数传递给它的函数是回调函数,它在getCurrentPosition成功完成后执行。来自Mozilla文档:

navigator.geolocation.getCurrentPosition(success[, error[, options]])

回调函数之外的其余javascript代码将继续执行而不等待回调函数运行,这就是为什么你看到1,2,4,3的顺序。