js回调函数的一个问题,求大神们帮帮忙

lzz950830 2015-07-07 08:20:49
最近在写一个调用百度地图api的小网页,百度地图里面好多操作都是通过回调函数来返回结果。
比如说用Boundary来查询行政区划的边界,代码如下:


var bdary = new BMap.Boundary();
var name ="武汉";
bdary.get(name, function(es)
{
var ply = new BMap.Polygon(es.boundaries[0], {strokeWeight: 2, strokeColor: "#ff0000"}); //建立多边形覆盖物
map.addOverlay(ply);
}

如果我有多个排好序的城市需要获取边界,按照顺序执行bdary的get函数,但是这样的话回调函数执行的顺序就不是排好的城市顺序了,而且还是随机执行的。。
所以问题来了。。有没有办法能够让回调函数也能按顺序执行,或者传入那个name参数到回调函数里

小弟刚学js不久,向各位大神求教了
...全文
157 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hch126163 2015-07-08
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
一个一个获取。。成功解码一个地址后再执行下一个,而不是一起解码,要不无法控制顺序
var addrs=['addr1','addr2'/*....*/]
var now=0;
getBound(addrs[now]);//////////
function getBound(name){
var bdary = new BMap.Boundary();

bdary.get(name, function(es)
{
    var ply = new BMap.Polygon(es.boundaries[0], {strokeWeight: 2, strokeColor: "#ff0000"}); //建立多边形覆盖物
    map.addOverlay(ply);
now++;
if(now<addrs.length)getBound(addrs[now]);////////////
}
}
++ 递归 一个一个执行
lzz950830 2015-07-08
  • 打赏
  • 举报
回复
引用 2 楼 jslang 的回复:
不要一次连续执行多个bdary.get()函数 要一次只执行一个bdary.get()函数,在本次的回调函数中再递归的执行下一个bdary.get()函数
多谢~
lzz950830 2015-07-08
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
一个一个获取。。成功解码一个地址后再执行下一个,而不是一起解码,要不无法控制顺序
var addrs=['addr1','addr2'/*....*/]
var now=0;
getBound(addrs[now]);//////////
function getBound(name){
var bdary = new BMap.Boundary();

bdary.get(name, function(es)
{
    var ply = new BMap.Polygon(es.boundaries[0], {strokeWeight: 2, strokeColor: "#ff0000"}); //建立多边形覆盖物
    map.addOverlay(ply);
now++;
if(now<addrs.length)getBound(addrs[now]);////////////
}
}
[手动膜拜]好牛逼啊,问题解决了,多谢版主
天际的海浪 2015-07-07
  • 打赏
  • 举报
回复
不要一次连续执行多个bdary.get()函数 要一次只执行一个bdary.get()函数,在本次的回调函数中再递归的执行下一个bdary.get()函数
Go 旅城通票 2015-07-07
  • 打赏
  • 举报
回复
一个一个获取。。成功解码一个地址后再执行下一个,而不是一起解码,要不无法控制顺序
var addrs=['addr1','addr2'/*....*/]
var now=0;
getBound(addrs[now]);//////////
function getBound(name){
var bdary = new BMap.Boundary();

bdary.get(name, function(es)
{
    var ply = new BMap.Polygon(es.boundaries[0], {strokeWeight: 2, strokeColor: "#ff0000"}); //建立多边形覆盖物
    map.addOverlay(ply);
now++;
if(now<addrs.length)getBound(addrs[now]);////////////
}
}

87,838

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧