在函数运行之前等待定时器完成

时间:2011-05-03 18:36:07

标签: javascript jquery timer intervals

我认为这相当基本,但我似乎无法找到一个在线。这可以是JavaScript或jquery。

我需要创建一个约1-2秒的计时器。 同时另一个功能是使用ajax将数据传递到服务器端的php文件。当响应文本返回时,它会在页面上显示它。

目前我运行了ajax函数,函数完成所需的时间约为0.1秒。但是这会使页面看起来非常跳跃,因为内容会更改css样式,而ajax正在等待响应,然后返回到原始返回(希望这是有意义的)。

无论如何要解决这个问题,我想在显示响应文本之前检查定时器是否已经结束。

我现在能够获得它的唯一方法是创建一个间隔计时器并在完成时运行ajax函数,但这并不理想,因为观众必须等待额外的秒或2即使请求到服务器需要花费的时间来完成。

希望所有这一切都有意义和非常感谢你的时间。

克里斯

2 个答案:

答案 0 :(得分:3)

最好将您的函数作为AJAX调用的“成功”处理程序而不是使用固定计时器。如何附加它取决于哪个库,如果有的话:

jQuery 1.4风格(仍然适用于1.5)

$.ajax({
    // your AJAX options

    success: yourFunc
});

jQuery 1.5 style

$.ajax({
    // your AJAX options
}).done(yourFunc);

DOM风格

// after creating your XHR

xhr.onreadystatechange = function() {
    if (this.readyState === 4) { // 4 means the request has completed
        if (this.status !== 200) { // 200 is success, so anything else...
            // log or report error
            return;
        }

        // call your other function, which uses the AJAX data
        yourFunc(this.responseText);
    }
};

答案 1 :(得分:0)

如果计时器是您唯一的选择,我会使用setTimeout或jQuery .delay()

$.ajax({
    success: function() {
        setTimout(function() {
            // styling code goes here
        }, 1000);
    }
});