jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jQuery:为什么$.ajax()不等待请求完成之前返回?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我花了3个小时调试一些代码,发现它是由我造成的,假设下面的代码的执行顺序是线性的:
$.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,请注明来意。