通常,一个异步函数,比如说async(arg, cb)
,在末尾提供一个回调函数占位符 ( cb
),这样您就可以在异步例程结束时运行自己的代码。如果异步函数没有回调参数怎么办?显然cb
缺少:
async(args);
myFunction();
myFunction()
将首先运行。我怎样才能在结束myFunction()
后才运行async
?我尝试编写自己的回调包装器但没有成功;他们只是重定向函数调用。
编辑我对上述问题的答案很感兴趣,但我将举例说明我是如何遇到这种情况的。
我的示例是在 Google Maps Directions 服务中。异步函数是一个名为 的绘图例程directionsDisplay.setDirections(result);
,我想在绘图完成后居中并放大。我把setTimeout
3 秒的时间放在一起,这样我想要的事情就会发生,但这是一个笨拙的解决方案。更改 Google Maps API 似乎是不可能的。有什么更好的?
方向服务在这里。
只需在任一下拉列表中选择一个城市。3 秒后,地图应该会移动。