js中循环 回调函数。。怎样让函数执行完之后再循环下一条呢????

Justin_wen_19890202 2012-12-04 10:12:58


msg='1#北京市--北京国际中心,2#北京市--A派公寓,3#北京市--建外SOHO东区';
function insertmap(msg){
var strs= new Array(); //定义一数组

strs=msg.split(","); //字符分割
for(a=0;a<strs.length;a++){

var id= new Array(); //定义一数组

id=strs[a].split("#"); //字符分割

var strs1= new Array(); //定义一数组

strs1=id[1].split("--"); //字符分割
var s = new BMap.LocalSearch('"'+strs1[0]+'"');
var sa = new Array('"'+strs1[1]+'"');
s.search(sa);

s.setSearchCompleteCallback(
function SearchResult(){
var rs = s.getResults();
for (i=0; i<rs.length; i++)
{
alert(rs[i].getPoi(0).title+'--'+rs[i].getPoi(0).point.lng+'--'+rs[i].getPoi(0).point.lat);
var lng=rs[i].getPoi(0).point.lng;
var lat=rs[i].getPoi(0).point.lat;
var ids=id[0];
var url1='baiduajax1.php';
var data1='lng='+lng+'&lat='+lat+'&ids='+ids;

$.post(url1,data1,function(msg){
alert(msg);
})
}
}
);


}
}




现在的问题是,如上三条记录,总是执行的最后一个'3#北京市--建外SOHO东区'。。。前两个没有执行

...全文
754 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
HolyNova 2012-12-04
  • 打赏
  • 举报
回复
正常就是执行完才执行下一条, 你把你的 POST 请求指定成 同步请求

sync: true,
KK3K2005 2012-12-04
  • 打赏
  • 举报
回复
感觉就是闭包。。。。 反正对一个 集合处理数据 如果迭代到最后发现总是在处理最后一个值 那么 基本就是 闭包问题了 懒得说原因了 搜索 闭包 另外 现在的 浏览器 都可以 断点调试 象这样40行的代码 断点跟踪几下 就可以发现问题了 有必要加强调试的经验
人鱼传说 2012-12-04
  • 打赏
  • 举报
回复
试试2楼说的方法

87,907

社区成员

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

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