AJAX 结果是否不同步并导致轮询结果不一致


Could AJAX results be out of synch and cause a discrepancy in polled results?

我正在使用jQuery,AJAX,PHP和mySQL开发类似于拍卖的功能。

Ajax 每秒访问服务器以获取最新的出价,在此调用期间,我们还从服务器获取剩余时间,以使所有参与者保持同步。

我有两个问题:

1)偶尔剩余时间会闪烁回前一次时间的值,持续几分之一秒。这可能与异步结果不同步有关吗?

相关代码的片段:

function dotimer() {
    updateScreen();
    setTimeout('dotimer()',1000);
}
function updateScreen(){
    $.ajax({
        type : 'POST',
        url : 'getinfo.php',
        dataType : 'json',
        data: { /* various params are passed to php */ },
        success : function(data){
            /* other info processed here...*/
            $("#countdowntimer").html(data.secondsremaining);           
        },
        error : function(XMLHttpRequest, textStatus, errorThrown) {}
    });
}

获取信息.php:

$return['secondsremaining'] = strtotime($end_time)-strtotime("now");
/* get other infor from database... */
echo json_encode($return);

(setTimeout 和 setInterval 都有相同的结果。

2) 每秒访问数据库是否过多?我看不到确保信息是最新的替代方案。有没有更好的方法可以做到这一点?拍卖时间相对较短(30分钟),我们预计参与者不会超过10人。

欢迎任何意见/建议,谢谢!

我认为这正是你的问题。由于请求是异步的,因此您无法控制它们的执行顺序。您必须同步您的请求并避免多个请求,即如果没有挂起的请求,您只能执行一个新请求,否则您无法控制何时触发每个请求的回调。