尝试让 Javascript 函数同步运行
Posted
技术标签:
【中文标题】尝试让 Javascript 函数同步运行【英文标题】:Try to get Javascript functions to run Synchronously 【发布时间】:2014-11-07 02:57:33 【问题描述】:我在使用以下代码 sn-p 时遇到问题。我的 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();
)
回复方式:
//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();
)
【问题讨论】:
运行这些代码 sn-ps 时究竟发生了什么?getLocation()
返回什么?
getLocation 是否返回承诺?
【参考方案1】:
您可以让您的getLocation
函数接受回调并在getLocation
完成时执行它们
getLocation = function(cb1, cb2)
// when done
cb1()
cb2()
function init()
getLocation(initializeMap, geoListen)
或者你可以传递一个回调引用数组并在getLocation
中循环它们并调用它们
您也可以使用 Q.js 并从 getLocation
返回一个承诺
【讨论】:
如果 getLocation 返回一个承诺,则不需要这样做。以上是关于尝试让 Javascript 函数同步运行的主要内容,如果未能解决你的问题,请参考以下文章