验证2个条件时执行功能:ajax响应和计时器

时间:2013-02-20 17:13:50

标签: javascript jquery timer request

我正在尝试模拟这样的事情:

  • 点击按钮会显示一个模式弹出窗口,上面写着“加载东西”,带有叠加层
  • 在此期间我用jQuery执行ajax调用,让2秒的计时器启动
  • 我需要隐藏模态弹出窗口,一旦我从ajax调用 得到响应,我的计时器结束。

我的ajax请求可能在不到2秒的时间内返回但是我需要用户在弹出窗口中读取消息,并且可能在2秒后返回(但我需要它返回继续)。

我试图调查$ .when但是我找不到正确设置'计时器'部分的方法。

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

如果您已开始使用$.when,则可以创建一个在x毫秒后解析的延迟;

function timedDeferred(n) {
    var deferred = jQuery.Deferred();

    setTimeout(function () {
        deferred.resolve();
    }, n);

    return deferred.promise();
}

...然后您可以使用$.when;

$.when($.ajax(), timedDeferred(2000)).then(function (ajax) {
    // "ajax" is an array of the arguments that $.ajax() provides; see
    // the bottom of http://api.jquery.com/jQuery.when/
});