尝试让Javascript函数同步运行

时间:2014-09-12 20:49:48

标签: javascript jquery asynchronous rsvp.js rsvp-promise

我在使用以下代码段时遇到问题。我的init方法需要在initializeMapp()和geoListen()运行之前运行并完成getLocation()函数。我将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 个答案:

答案 0 :(得分:0)

您可以让getLocation函数接受回调并在getLocation完成后执行

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

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

或者您可以传递一组回调引用并在getLocation中循环遍历它们并调用它们

或者你可以使用Q.js并从getLocation

返回一个承诺