2

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

  • 单击按钮会显示一个模式弹出窗口,上面写着“正在加载东西”,并带有覆盖
  • 与此同时,我用 jQuery 执行了一个 ajax 调用,并让一个 2 秒的计时器启动
  • 一旦我从 ajax 调用得到响应并且我的计时器结束,我需要隐藏模式弹出窗口。

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

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

谢谢你的帮助!

4

1 回答 1

4

如果您设置为 using $.when,您可以创建一个 Deferred ,它会在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/
});
于 2013-02-20T17:18:15.907 回答