首页 新闻 会员 周边 捐助

回调函数的执行顺序问题?

0
悬赏园豆:10 [已关闭问题] 关闭于 2012-06-07 10:15

最近在弄百度地图,需要把一组GPS点数组转换为百度的点数组,用到了如下js代码:调用transMore(points,type,callback)方法后回调函数好像没有按次序执行,那这样就得不到和原来相对应的转换后的百度坐标数组。那么怎么能按先后顺序执行就是先发送先执行请高人给指点一下,多谢!

(function(){
function load_script(xyUrl, callback){
    var head = document.getElementsByTagName('head')[0];
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = xyUrl;
    //借鉴了jQuery的script跨域方法
    script.onload = script.onreadystatechange = function(){
        if((!this.readyState || this.readyState === "loaded" || this.readyState === "complete")){
            callback && callback();";//这句是什么意思?
            // Handle memory leak in IE
            script.onload = script.onreadystatechange = null;
            if ( head && script.parentNode ) {
                head.removeChild( script );
            }
        }
    };
    // Use insertBefore instead of appendChild  to circumvent an IE6 bug.
    head.insertBefore( script, head.firstChild );
}
function transMore(points,type,callback){
 var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from=" + type + "&to=4&mode=1";
 var xs = [];
 var ys = [];
 var maxCnt = 20;//每次发送的最大个数
 var send = function(){
  var url = xyUrl + "&x=" + xs.join(",") + "&y=" + ys.join(",") + "&callback=callback     //动态创建script标签
     load_script(url);
  xs = [];
  ys = [];
 }
    for(var index in points){
  if(index % maxCnt == 0 && index != 0){
   send();
  }
     xs.push(points[index].lng);
     ys.push(points[index].lat);
  if(index == points.length - 1){
   send();
  }
    }
   
}

window.BMap = window.BMap || {};
BMap.Convertor = {};
BMap.Convertor.transMore = transMore;
})();

上述每次发送20个点后执行回调函数

yxf2011的主页 yxf2011 | 初学一级 | 园豆:6
提问于:2012-05-15 11:29
< >
分享
所有回答(1)
0

你好,你的问题是怎么处理的

lixiangyu1 | 园豆:202 (菜鸟二级) | 2013-10-30 14:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册