Попробуйте заставить функции Javascript работать синхронно

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

Метод 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 функция принимает обратные вызовы и выполняет их, когда getLocation отделки

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

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

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

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

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