amsw11 2016-04-30 15:21 采纳率: 0%
浏览 4261

js中回调函数的执行顺序

代码是调用了地图api函数,里面有个回调函数,想在回调函数里把值赋给全局变量,但是回调函数之后的代码里全局变量的值没变,具体见代码:

 <script type="text/javascript">

//基本地图加载
var map = new AMap.Map("container", {
    resizeEnable: true,
  //地图中心点
    zoom: 13 //地图显示的缩放级别
});



   var g=18;

   AMap.service(["AMap.RoadInfoSearch"], function() { //加载地理编码
     var road=new AMap.RoadInfoSearch({
  city:"北京",
  panel:"result"
  });
  alert("2:");
  road.roadInfoSearchByRoadName("广贤路",function (status,result){
  if(status=="error ")alert("error");
  else if (status=="no_data")alert("noting");
  else {
      var a = result.info;
      var b = result.roadInfo;
      g=59;

  }
});
    });

  alert(g);
...后面还有许多代码,g弹出的是18,但如果alert(g);前加一个alert("..");得到的g
就是59,这究竟是为何,求问
  • 写回答

1条回答 默认 最新

  • danielinbiti 2016-04-30 15:25
    关注
     如果road.roadInfoSearchByRoadName是异步执行的话,是会接着往下执行alert(g);  至于值会不会是59,看road.roadInfoSearchByRoadName方法执行的速度已经回调执行完的速度(正常来说肯定是alert(g)先执行)
     你在alert(g)加上alert("..")相当于等待road.roadInfoSearchByRoadName异步执行完在执行alert(g)
    
    评论

报告相同问题?

悬赏问题

  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用