浅谈js的ajax的异步和同步请求的问题

浅谈js的ajax的异步和同步请求的问题

下面小编就给大家带来一篇关于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异步和同步请求的所有问题。希望大家能支持我们~

浅谈js的ajax的异步和同步请求的问题