javascript - 同步ajax请求后的方法和该请求回调方法的执行顺序?
高洛峰
高洛峰 2017-04-11 12:07:02
[JavaScript讨论组]

如题,示例代码:

$.ajax({
  url:'test',
  async:false,
  success:function(){
    console.log('callback');
  }
});
console.log('test');

这两个输出的顺序我在chrome下测试是callback test,为什么会是这样的结果?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(7)
伊谢尔伦

谢邀, 输出顺序跟你想的不一致的原因,是因为你主动设置了异步变同步,那么就意味着你要按照代码顺序来执行,自然是先 callback, 后 test。

而且官方也提到了这个api 被废弃了。

As of jQuery 1.8, the use of async: false with jqXHR ($.Deferred) is deprecated

那么也说说大概的原理,jquery 会锁死整个浏览器,直到回调执行完毕为止,也就是说这个时候,浏览器不会干任何事情,现在你使用这个方式,chrome 会给你警告的。你可以看看。

阿神

因为 async: false 这是同步加载了

大家讲道理

async: true

大家讲道理

因为你设置了 Ajax 的请求为同步的方式, async:false这段代码表示将异步设置为 false。所以他会先完全执行完上面的那段代码,再执行接下来的代码。

你将 async:true,他就会先输出 test 然后输出 callback

怪我咯

async:false 代表使用同步方式请求,也就是说ajax完成之前下面的所有程序都处于等待状态。尽量不要用同步,太阻塞。

PHP中文网

async: false 将ajax请求设为同步了,我记得以前用的时候火狐和IE都会提醒一个警告,意思大概是提示谨慎使用,可能会失效一类的。

巴扎黑

async:false
你这里设置为同步了,必须等待ajax完成才能下一步,所以会callback test

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号