欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于Ajax多个异步请求出现返回结果混乱的问题

程序员文章站 2024-01-24 09:12:46
...

关于Ajax多个异步请求出现返回结果混乱的问题

Synchronous & Asynchronous

1. Synchronous(同步)

function myfunction(){
    //dosomething
}

myfunction();
//doSomethingElse

在这里dosomethingElse会等myfunction方法体执行完毕后再执行,这就是同步操作

2. Asynchronous(异步)

function myfunction(){
    //doSomethingElse
}

myfunction();
$.post(url,args,function(data){
    //doSomthingElse
})

在这里doSomthingElse不会等待myfunction方法体执行完毕,它会在myfunction没有执行完前
通过Ajax发送异步请求操作,做一些其他的事情,这就是异步操作。

但是当你同时进行两个异步请求数据时,有可能会出现数据接收混乱的问题,比如下边:

$.post(url,args1,function(data){
    //doSomthingElse
});
$.post(url,args2,function(data){
    //doSomthingElse
});

这样就会出现一个问题:当第一个请求发送后还没有返回数据的时候,第二个请求发送了并返回了数据(第二个数据先于第一个数据返回),这样第一个请求就会拿到第二个请求返回的数据,从而造成了数据接收混乱。 那么如何解决这个问题呢?

1.我们可以将第二个异步请求写在第一个异步请求的回调函数里
因为回调函数是当前面的事务执行完成之后再执行的函数,所以把第二个异步请求写在第一个的回调函数中能保证前面数据接收完毕后再进行第二次异步请求,从而避免了数据接收混乱的问题。例子如下:

$.post(url,args1,function(data){
    //doSomthingElse
    $.post(url,args2,function(data){
        //doSomthingElse
    });
});
相关标签: Ajax async