问题描述
- 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,这究竟是为何,求问
解决方案
如果road.roadInfoSearchByRoadName是异步执行的话,是会接着往下执行alert(g); 至于值会不会是59,看road.roadInfoSearchByRoadName方法执行的速度已经回调执行完的速度(正常来说肯定是alert(g)先执行)
你在alert(g)加上alert("..")相当于等待road.roadInfoSearchByRoadName异步执行完在执行alert(g)
解决方案二:
动态加载js,并执行回调函数
时间: 2024-10-29 04:12:56