下面小编就给大家带来一篇关于js中ajax的异步和同步请求的文章。我觉得边肖挺好的。我现在就分享给你,给你一个参考。来和边肖一起看看吧。
先来看以下代码:
var flag=true
var指数=0;
$.ajax({
网址: https://www.jb51.net/,
成功:函数(数据){
flag=false
}
});
while(flag){
指数;
}
警报(索引);
上次警报的索引结果是什么?
有些人可能会说0。其实没那么简单。你可以自己试试。可以看到最终程序进入了无限循环!怎么会这样!
我们在看一段代码:
var flag=true
$.ajax({
网址: https://www.jb51.net/,
成功:函数(数据){
flag=false
}
});
警报(标志);
各位,最后一个警戒标志的值是多少?是的,是真的!为什么?显然,我们的ajax请求是成功的。flag怎么可能设置为false,但还是真的呢?这其实是Ajax的异步机制造成的。
这里解释一下,同步和异步。Js是单线程的,因为ajax请求的执行会花费一定的时间,甚至会出现网络故障,所以返回结果有延迟;此时,如果是同步执行,就必须等到ajax返回结果后再执行下一段代码。如果ajax请求需要1分钟,程序将不得不等待1分钟。如果是异步执行,就意味着告诉ajax代码,“哥们,既然你这么晚才返回结果,我就不等你了。我还有很多代码要执行。完了告诉我。”
默认情况下,Ajax是异步请求的,所以我们上面看到的结果出现了。也就是ajax中的代码还没有完成,所以先执行了下面的代码。
那么,如何让Ajax执行同步请求呢?这需要设置异步。
代码如下:
var flag=true
var指数=0;
$.ajax({
网址: https://www.jb51.net/,
异步:假,
成功:函数(数据){
flag=false
}
});
while(flag){
指数;
}
警报(索引);
Async默认为真,即异步,我们设置为假,即同步。到时候看结果吧。
以上就是边肖带来的关于js中ajax异步和同步请求的所有问题。希望大家能支持我们~