【发布时间】:2012-06-07 12:59:07
【问题描述】:
我刚刚花了 3 个小时调试了一些代码,结果发现它是由我假设以下代码的执行顺序是线性的:-
$.ajax( {ajax options} );
console.log('I was assuming this would execute once the ajax request was complete');
这不是第一次给我带来问题,我只是想知道这种行为的原因是什么?
这样任何 ajax 请求都不会阻碍其他可能与 ajax 请求无关的脚本执行吗?
【问题讨论】:
-
AJAX中的第一个A代表异步。 -
您可以设置选项
async: true。同步请求可能会暂时锁定浏览器,在请求处于活动状态时禁用任何操作。不推荐。 -
@Gareth 我知道 A 代表异步,但是我一直认为这是指在没有“重新加载”页面的情况下发出请求的事实,即发出“父”http请求再次,因此该页面与传递该页面的原始 http 请求“不同步”。
-
+1 这个问题,因为它是关于对一个基本和重要观点的误解,它写得很清楚,并且吸引了一些相当不错(而不是居高临下!)的答案。
-
@rgvcorley 啊。不,正如下面的答案所说,调用是异步的,因此会立即返回。做你需要的两种方法是1)关闭异步(通常是坏主意)或2)在成功时使用回调。