Обеспечение порядка исполнения: 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();
});