我有一些代码,异步调用谷歌地图:发现通过与谷歌地图API的回调来传递信息的好方法
var directionsService = new google.maps.DirectionsService;
directionsService.route(arg1, callback);
directionsService.route(arg2, callback);
directionsService.route(arg3, callback);
function callback(response, status) {
// complex function here
}
眼下在单件的每个数据回调的结果存储在一个全局变量。设计有所增加,现在我想在每个回调中包含一个参数。但我不能直接这样做,因为我不控制directionsService.route
。这也让我觉得这已经是解决问题的一种迂回方式;我宁愿将arg1, arg2, arg3
及其参数传递给一个可以处理异步内容并在所有内容都返回时清理的函数。关于什么是最好的方式去做这件事的任何建议?
我可以通过添加另一个全局并在调用之间更新它来深入挖掘我的洞。我可以为directionsService.route编写一个封装器,将它封装在另一个回调间接层中。我可以尝试将回调格式强制转换为像async这样的库所需的匹配。我可以编写几个版本的回调函数,或者用函数发生器替换它。这些选项是否合理?有什么更好的吗?
老实说,这是一个小项目,我不需要一些可以很好地扩展的东西,但仅仅为了我自己的安心,我想要一些不好的东西,有点干。