0

a.html有三个ajax方法(ajax1,ajax2,ajax3),先后访问a.php,如果ajax1访问a.php程序sleep(15)。请问这样会不会阻塞ajax2,ajax3的访问呢,原因是什么?

a.html代码如下:

var a = 1;
var b = 1;
var c = 1;
function ajax1(){
    $.get('a.php?from=a', function(){
        $('#ajax1').text(a);
        a++;
        ajax1();
    });
}
function ajax2(){
    $.get('a.php?from=b', function(){
        $('#ajax2').text(b);
        b++;
        ajax2();
    });
}
function ajax3(){
    $.get('a.php?from=c', function(){
        $('#ajax3').text(c);
        c++;
        ajax3();
    });
}

function beginAjax(){
    ajax1();
    ajax2();
    ajax3();
}

a.php代码如下:

<?php
$from= $_GET['from'];
if($from == 'a'){
    sleep(15);
}
echo 1;

查看全部 7 个回答

0

sleep是可以阻塞其他请求的访问的。关键在于你的请求是否是用的用一个 fast-cgi 进程。

推荐答案

1

你模拟不就知道了,js直接发三个ajax请求过去
顺序是ajax1,ajax2,ajax3
分别带参数sleepTime1=10,sleepTime2=5,sleepTime3=2,
然后你打开调试network,你看三个ajax哪个先response。