我有一个问题,开发一个页面,通过使用jquery进行几个Ajax调用来填充其内容,问题是每个调用都必须等待当前的Ajax调用完成,然后才能开始,这使得页面加载非常慢。
我希望所有的Ajax调用都能在不等待其他调用的情况下启动。
我知道$.when(),但问题是我不能将所有调用都传递到一个$.when()中,因为它们都是由不同的事件和函数发起的。
发布于 2018-04-06 15:45:41
我已经解决了这个问题。问题不是来自jquery ajax调用,而是来自我自己的函数。
我有一个这样的函数
function perform_ajax(url,parameters,callback){
//codes to perform jquery ajax here
}
所以如果我有另一组代码,比如
perform_ajax(url1,parameter1,callback1);
perform_ajax(url2,parameter2,callback2);
perform_ajax(url3,parameter3,callback3);
这三个代码同步执行,因为它们引用相同的函数...我使用以下命令解决了这个问题
async function perform_ajax(url,parameter,callback){
//codes to perform jquery ajax calls
}
但我对此的问题是向后紧凑性。
在定义函数之前,有没有办法检查浏览器是否支持异步函数?
发布于 2018-04-04 16:39:19
尝试设置
$.ajax({
async:true,
....
})
JQuery文档here
异步(默认值: true)类型:布尔值默认情况下,所有请求都是异步发送的(即默认情况下设置为true )。如果需要同步请求,请将此选项设置为false。跨域请求和dataType: jsonp请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,从而在请求处于活动状态时禁用任何操作。从jQuery 1.8开始,不推荐将async: false与jqXHR ($.Deferred)一起使用;必须使用success/error/complete回调选项,而不是jqXHR对象的相应方法,如jqXHR.done().
https://stackoverflow.com/questions/49656050
复制