确保执行顺序:javascript

时间:2016-04-14 21:02:27

标签: javascript google-maps promise jquery-deferred

我正在尝试按下按钮点击谷歌地图JS(而不是包含在头部进行优化)。

     $.when(
           $.getScript("https://maps.googleapis.com/maps/api/js?v=3.17&libraries=places")
               .done(function() {
                 console.log('loaded');
               })
        )
        .then(_getCurrentLocation())
        .then(_lookForLatLang())  

getCurrentLocation只是一个地理定位对象,浏览器支持基于该反向查找完成。

我想严格遵循Javascript文件的执行顺序,但理想情况并非如此。我可以看到getCurrentLocation的输出FIRST&然后getScript log。

脚本有什么问题?

3 个答案:

答案 0 :(得分:3)

.then(_getCurrentLocation())

您刚刚立即调用_getCurrentLocation 并将返回的值传递给then()(就像任何其他函数调用一样)。

您想要传递函数本身。

答案 1 :(得分:2)

使用回调:

$.getScript("https://maps.googleapis.com/maps/api/js?v=3.17&libraries=places")
    .done(function() {
        console.log('loaded');
    }, function () {
        _getCurrentLocation();
        _lookForLatLang();
    });

答案 2 :(得分:1)

$.getScript("https://maps.googleapis.com/maps/api/js?v=3.17&libraries=places")
  .done(function() {
    console.log('loaded');
    _getCurrentLocation();
    _lookForLatLang();
  });