2014-09-12 4 views
0

У меня возникли проблемы со следующим фрагментом кода. Мой метод init должен запустить и завершить функцию getLocation() до того, как будут запущены функции initializeMapp() и geoListen(). У меня есть rsvp.js, связанный как ресурс, но не совсем уверен, как его реализовать. Я также попробовал метод jQuery $ when.done. Любая помощь приветствуется.Попробуйте запустить Javascript для синхронного запуска

JQuery Метод: метод

//initial page load method 
function init() { 

    //get user location then builds map and listens to database 
    $.when(getLocation()).done.(function() { 

     //build map now that you have user location 
     initializeMap(); 

     //Starts listening to database changes 
     geoListen(); 

    }) 

} 

RSVP:

//initial page load method 
function init() { 

     //get user location then builds map and listens to database 
    getLocation().then(function() { 

    //build map now that you have user location 
    initializeMap(); 

    //Starts listening to database changes 
    geoListen(); 

    }) 

} 
+1

Что случилось именно тогда, когда вы запускали эти фрагменты кода? Что возвращает 'getLocation()'? – ajp15243

+0

Получает ли getLocation обещание? – Magrangs

ответ

0

вы можете сделать свой getLocation функция принимает обратные вызовы и выполнять их, когда getLocation заканчивает

getLocation = function(cb1, cb2) { 
    // when done 
    cb1() 
    cb2() 
} 

function init() { 
    getLocation(initializeMap, geoListen) 
} 

или вы можете передать массив ссылок обратного вызова и прохождение через них i п getLocation и называть их

в качестве альтернативы вы можете использовать Q.js и вернуть обещание getLocation

+0

Не нужно делать это, если getLocation возвращает обещание. – Magrangs