当前位置: 代码迷 >> 综合 >> ajax同步导致浏览器假死
  详细解决方案

ajax同步导致浏览器假死

热度:0   发布时间:2024-02-10 23:52:02.0

点击按钮,在发出请求前页面有个loading效果,即显示一张“正在加载”的gif图片。

js是单线程的,执行同步ajax的时候会导致线程阻塞,不能加载loading图片。所以不能使用同步请求。

所有的同步都是可以使用异步替代的。但是怎么替代改动代码最少或者改动不大呢?

我使用下面的方式:$.when().done();

 $.Deferred();

 

1、主线程代码

	$('.btn').click(function() {$('.loadingicon').show();$.when(getData()).done(function(data) {$('.loadingicon').hide();alert(data);});});

2、被调用ajax函数

	function getData() {var defer = $.Deferred();$.ajax({url : '',async : true, // true异步。false同步success : function(data) {defer.resolve(data)}});return defer.promise();} 

 

  相关解决方案