这是一个棘手的问题,因为代码完全正常工作,它只是激发了我的审美意识,有点微不足道。我正在转向堆栈溢出,因为我的大脑现在正在让我失望。Javascript回调函数和递归
下面是使用Google Maps JS API查找地址并在地图上放置标记的代码片段。但是,有时最初的查找失败,所以我想用不同的地址重复该过程。
geocoder.getLatLng(item.mapstring, function(point) {
if (!point) {
geocoder.getLatLng(item.backup_mapstring, function(point) {
if (!point) return;
map.setCenter(point, 13);
map.setZoom(7);
map.addOverlay(new GMarker(point));
})
return;
}
map.setCenter(point, 13);
map.setZoom(7);
map.addOverlay(new GMarker(point));
})
(至getLatLng
第二个参数是一个回调函数。)
当然,你可以看到,该居中和缩放地图,并添加标记的三条线是重复的,一旦在初级回调并在“回退回调”中一次(哈哈)。你可以找到一种方法来表达整个事情没有任何冗余?如果您的解决方案适用于任意数量的备份映射字符串,您就可以获得奖励积分和我的赞美。
您不需要文字命名,您可以使用我在解决方案中使用的内容 - arguments.callee指向该函数。 – 2008-11-09 06:43:54