Home > Scripts, Thiết kế Web > Vấn đề đồn bộ và bất đồng bộ với ajax hoặc jquery ajax

Vấn đề đồn bộ và bất đồng bộ với ajax hoặc jquery ajax

Async là bất đồng bộ. Mặc định giá trị của chúng là true => Bất đồng bộ. Nhưng khi sử dụng 1 số ứng dụng, nhất là ajax lồng nhau hoặc jquery ajax lồng nhau thì phải khai báo là false => Đồng bộ. Vì sao ?

Xét ví dụ sau:

<script>
$(document).ready(function(){
$(“a.test”).click(function(){
thamso=false;
$.ajax({
url:”test_ajax.php”,
type:”get”,
 async:true,
success:function(kq){
thamso= kq;
}
})

alert(thamso);
})
})
</script>
</head>

<body>
<a href=”#” class=”test”>Click me</a>
</body>

Tạo file test_ajax.php với nội dung sau:

<?php
echo “true”;
?>

Khi chạy ví dụ này. Kết quả sẽ luôn ra false. Bởi vì bất đồng bộ, cho phép nhiều sự kiến diễn ra cùng lúc. Khi đó thay vì phải đợi ajax trả kết quả về thì nó đã làm luôn hành động alert() dưới ajax. Dĩ nhiên là lấy tham số mặc định ở trên mà chúng ta đã gán là false. Vậy với async:true. Nó sẽ thực hiện hành động bất chấp ajax trả về kết quả gì.

Để giải quyết nó ta thay đổi async từ true thành false thì kết quả sẽ trả về true đúng với yêu cầu của chúng ta:

<script>
$(document).ready(function(){
$(“a.test”).click(function(){
thamso=false;
$.ajax({
url:”test_ajax.php”,
type:”get”,
async:false,
success:function(kq){
thamso= kq;
}
})
alert(thamso);
})
})
</script>
</head>

<body>
<a href=”#” class=”test”>Click me</a>
</body>

Như chúng ta thấy, nếu quy là đồng bộ. Kịch bản sẽ được chạy tuần tự, và chúng sẽ đợi nhau để thực thi các hành động liên đới. Chẳng hạn ví dụ ở trên là phải thực thi hành động của ajax rồi mới thực thi các hành động bên dưới.

Nguần:  http://www.qhonline.info/forum/showthread.php/3706-thac-mac-ve-async-trong-ajax-va-jquery

Advertisements
  1. 01/10/2014 at 22:35

    Hey I am so happy I found your web site, I really found you by error,
    while I was searching on Bing for something else, Anyhow I am here now and would just like to say thank you for a incredible post
    and a all round thrilling blog (I also love the theme/design), I
    don’t have time to browse it all at the moment but I have book-marked it and also added in your RSS feeds,
    so when I have time I will be back to read a lot more, Please do
    keep up the superb work.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: