通常情况下,异步函数(例如async(arg, cb)
)在末尾提供回调函数占位符(cb
),以便您可以在异步例程结束时运行自己的代码。如果异步函数没有回调参数会怎么样?显然,与cb
失踪:检测不提供回调的异步函数的执行结束
async(args);
myFunction();
myFunction()
将首先运行。我如何才能让myFunction()
只在async
结束后才能运行?我试图写我自己的回调包装没有成功;他们只是重定向函数调用。
编辑我对上述答案感兴趣,但我会举例说明我是如何遇到这种情况的。
我的例子是在Google Maps Directions服务中。异步函数是一个叫做directionsDisplay.setDirections(result);
的绘图例程,我想在绘图完成后重新绘制并放大。我整理了3秒钟的setTimeout
,以便我想要的发生,但这是一个笨拙的解决方案。改变Google Maps API似乎是不可能的。有什么更好的?
方向服务在这里。
只需选择在任何下拉列表中的城市。 3秒后地图应该移动。
[谷歌地图V3 setDirections()回调]的可能重复(http://stackoverflow.com/questions/7228400/google-maps-v3-setdirections-callback) – jfriend00 2012-04-22 19:04:54