Обеспечение порядка исполнения: javascript

Я пытаюсь загрузить карту Google 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 ответа

Решение

Используйте обратный вызов:

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

.then(_getCurrentLocation())

Вы только что позвонили _getCurrentLocation немедленно и передал возвращенное значение then() (как и любой другой вызов функции).

Вы хотите передать саму функцию.

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

Другие вопросы по тегам