A-A+

ajax 取回收据未完成,就进行了下一个函数

2016年04月11日 JavaScript 暂无评论 阅读 72 次

ajax 取回收据未完成,就进行了下一个函数?

ajax的同步异步问题. 加   async:false, 设置为同步后正常

Ajax是异步的,所以赋值是成功完成了的,但是大部分情况下是在你尝试去使用result全局变量之后才发生赋值操作,因此是没有保证的。(验证很简单:在result = coordinates;之后加个console.log('aaa');, 在使用result之前加个console.log('bbb');, 看看aaa与bbb的输出顺序就知道了)。

所以,针对Ajax请求返回的数据,你不能这样使用,建议还是在回调函数中直接操作吧。如果你一定要这样用,可以使用一个递归的setTimeout不断去check Ajax请求是否已经完成(result是否已经被赋值),如果已经完成就使用result的值,退出递归,否则继续~~

ps:    JavaScript:彻底理解同步、异步和事件循环(Event Loop)

JavaScript callback function 理解

给我留言

Copyright © web前端技术开发个人博客 保留所有权利  京ICP备14060653号 Theme  Ality

用户登录