仅当getJSON超过n毫秒时才显示元素?

Mik*_*oud 11 html javascript ajax jquery

我有一些JavaScript:

surveyBusy.show();

$.getJSON(apiUrl + '/' + id)
    .done(function (data) {
        ...
        surveyBusy.hide();
    })
    .fail(function (jqXHR, textStatus, err) {
        ...
        surveyBusy.hide();
    });
Run Code Online (Sandbox Code Playgroud)

不过,我想只能发出surveyBusy.show();,如果$.getJSON需要超过n毫秒数.否则你会闪烁.getJSONapi 上是否有可以执行此操作的回调?我在文档中看不到任何内容.

Jas*_*n P 12

只需使用超时.此外,我将"隐藏"代码放在always处理程序中以减少代码重复.

var busyTimeout = setTimeout(function() { surveyBusy.show(); }, 2000);

$.getJSON(apiUrl + '/' + id)
    .done(function (data) {
        ...
    })
    .fail(function (jqXHR, textStatus, err) {
        ...
    })
    .always(function() {
        clearTimeout(busyTimeout);        
        surveyBusy.hide();        
    });
Run Code Online (Sandbox Code Playgroud)

  • @ rink.attendant.6没有理由用`window.前缀污染你的代码.你到处都在使用`window`吗?你在使用`window.document.whateverMethod`吗?或者您创建的每个全局变量/函数?我希望不会,对于隐含的东西来说,这有点过分了.如果它被重新定义在全局命名空间中的其他地方,那么就没有办法解决这个问题 - 添加`window`并不会神奇地找到原来的...它已经被覆盖了 (3认同)