大佬教程收集整理的这篇文章主要介绍了jQuery:为什么$.ajax()不等待请求完成之前返回?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
$.ajax( {ajax options} ); console.log('I was assuming this would execute once the ajax request was complete');
这不是我第一次引起我的问题,而只是想知道这个行为的原因是什么?
是不是所有的ajax请求不能阻止可能与ajax请求无关的其他脚本执行?
事实上,大多数浏览器中的JavaScript是异步的.举个例子,这段代码:
document.getElementById('foo').onclick = function() { alert('foo clicked'); }; document.getElementById('bar').onclick = function() { alert('bar clicked'); };
哪个会先运行?您不知道,因为浏览器模型固有的异步(或事实上大多数事件驱动的代码).当事件发生时运行代码.您设置文档,然后等待事件发生,您的代码可以按各种不同的顺序执行,具体取决于事件先发生. Javascript代码需要在页面的整个生命周期中执行,而不仅仅是在第一次创建时.
所以在一般的JavaScript编程(或至少,JavaScript编程超出最简单的层次)通常将是异步的.此外,http请求也是异步的,这是很有意义的.
首先,当你暗示你的问题,使代码同步将阻止执行.也就是说,您可能不想让动画等待两秒钟才能开始,因为您正在向两个进一步的http请求发送一个http请求.服务器响应时间可能是(a)不规则和(b)缓慢,因此,您的应用程序的设计不依赖于服务器响应的速度是没有意义的.
第二,更重要的是,您的用户不会停止使用该页面,因为您的脚本正在进行AJAX调用.您的用户不在乎您的用户可能会关心您的正常的滚动行为不起作用,因为您的脚本目前被绑定在一个不相关的AJAX请求中.为了配合整个浏览器Javascript编程的异步性质,绝大多数http调用应该是非阻塞的,异步的.
以上是大佬教程为你收集整理的jQuery:为什么$.ajax()不等待请求完成之前返回?全部内容,希望文章能够帮你解决jQuery:为什么$.ajax()不等待请求完成之前返回?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。