等待动画完成,然后返回

我有一个谷歌地图应用程序,如果它太大,将调整地图div的大小,我遇到的问题是,我正在尝试使用Jquerys动画,并在它完成之前返回function,我必须触发谷歌地图它重新resize。

因此,地图在触发之前放大并设置边界,从而使其偏离。 并且只有在第二次触发时才能正常工作。

function doResize() { if ($("#map_div").width() > 600) { $("#stores").hide(0, function(){ $("#map_div").animate({width: '500px'}, function(){ google.maps.event.trigger(G_MAP, 'resize'); $("#stores").fadeIn(1000); }); }); } } 

我不能将其余的代码放在回调中有两个主要原因,一个是它的一个大function,它在两个地方使用。 宽度也只有600多次。

请注意当您第一次单击newyork其偏移量而不是居中时,然后单击其他状态并单击返回纽约。

编辑:

因为我不能让动画同步并且做:

 while($("#map_div").width() > 500) { $("#map_div").width($("#map_div").width() - 1) } 

根本不顺利,我决定放弃动画。 迫使Jquery必须运行异步实际上有时会垮台。 特别是当javascript本身是单线程时,你会认为他们可以选择等到它完成。

我不能将其余的代码放在回调中有两个主要原因,一个是它的一个大function,它在两个地方使用。 宽度也只有600多次。

然而,这正是你必须做的 – 或者更确切地说,你不想在那里移动代码,只需从回调中添加一个调用。 你不能阻止等待动画完成的函数的返回,在JavaScript中没有办法做到这一点。 您尝试这样做的各种方式(忙等待等)不起作用。 它只发生一次并不重要,你仍然需要使用回调。