Несколько запросов AJAX задерживают друг друга

У меня есть длинный запрос на опрос на моей странице. Сценарий на стороне сервера настроен на тайм-аут через 20 секунд.

Таким образом, когда длительный опрос находится в режиме ожидания, и пользователь нажимает другую кнопку, отправка этого нового запроса откладывается до истечения времени ожидания предыдущего скрипта.

Я не вижу ничего плохого в коде на стороне jQuery. Почему задерживается событие onclick?

function poll()
{
$.ajax({
    url: "/xhr/poll/1",
    data: {
        user_id: app.user.id
    },
    type: "POST",
    dataType: "JSON",
    success: pollComplete,
    error: function(response) {
        console.log(response);
    }
});
}

function pollComplete()
{
    poll();
}

function joinRoom(user_id)
{
$.ajax({
    url: "/xhr/room/join",
    dataType: "JSON",
    type: "POST",
    data: {
        user_id: app.user.id,
        room_id: room.id
    }
});
}

<button id="join" onclick="javascript:joinRoom(2);">Join</button>

############ PHP Controller on /xhr/poll

$time = time();
while ((time() - $time) < 20)
{
    $updates = $db->getNewStuff();

    foreach ($updates->getResult() as $update)
        $response[] = $update->getResponse();

    if (!empty($response))
        return $response;
    else
        usleep(1 * 1000000);

    return 'no-updates';
}

Может ли быть проблема с "usleep"?

XHR Screenshot

13
задан F.P 3 August 2011 в 20:42
поделиться