关于jquery方法执行顺序的疑惑。(或许跟同步异步有关?方法执行分同步和异步吗?)

代码:functionA(){varid=$("#aList:checked").val();$.ajax({url:'/controller/action',type:... 代码:

function A() {
var id= $("#aList:checked").val();
$.ajax({
url: '/controller/action',
type: "get",
data: {ID:id},
datatype: "html",
async: false,
success: function (data) {
if (data == "Error:1") {
alert("error!");
}
else {
var poi = getLongLatbyAddress($("#aList:checked").parent().text());
alert("3");
}
},
error: function () {
alert("error");
}
});
}

//根据地址获取经纬度
function getLongLatbyAddress(addr) {

var myGeo = new BMap.Geocoder();
var point= myGeo.getPoint(addr, function (p) {
alert("1");
if (p) {
return p;
}
}, "北京市");
alert("2");
return point;
}

按照我的理解,执行完毕网页上应该分别弹出内容为1,2,3的三个提示框。但是我运行该程序实际弹出的顺序是2,3,1。。。 于是我很迷茫。。 正常jquery在执行的时候不是按照顺序执行的吗。先执行方法内部的代码,然后再执行方法外面的。为什么这个程序没等方法内部执行完,没给出返回值就抢险执行该方法之后的语句了。。 求高手解答。谢谢。
展开
 我来答
百度网友5e99258cf
2014-03-12 · TA获得超过1687个赞
知道大有可为答主
回答量:1299
采纳率:71%
帮助的人:699万
展开全部
亲~AJAX是异步传输的啊~
追问
和那个ajax没关系,我已经把它改成同步的了。
追答
你用的百度地图的API吧~可能是它的问题~如果普通的JS运行是从上到下来的~因为JS是单线程的,所以它在遇到有延时的操作是跳过去将它放入队列,等执行完全部的JS之后再从队列中执行之前没有执行的事件~
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式