javascript - JQuery show() - 暂停函数直到执行回调

标签 javascript jquery halt

我希望我的 javascript/jquery 应用程序停止执行所有动画,并且仅在显示加载 .gif 时继续执行。

我确实设法在其他动画进行时显示加载 .gif,但我确实需要它在其他动画播放之前就已经显示。

所以我构造了一个等待回调执行的方法,但它没有按预期工作。

var Shown = false;
function ShowLoadingGif() {
    $("#loading").show("fast", function() {
        Shown = true;   
    });
    while(!Shown) {
        //wait for callback to be executed
    }
    Shown = false;
}

参见this JFiddle example 。我不仅想知道如何正确地解决这个问题;而且想知道如何解决这个问题。我也非常感谢任何有关它为何不能按我预期工作的意见。

提前致谢!

最佳答案

您可以使用类似的方法,使用 jQuery 延迟对象(请参阅 Docs)

var Shown = false;
function ShowLoadingGif() {
    var $promise = $.Deferred();
    $("#loading").show("fast", function() {
        $promise.resolve("Im done");
    });
    $promise.done(function(data) {
         // data === "Im done"
    });
}

我已经更新了您的 Fiddle,现在,当事情完成时,它会按照您的预期发出警报

Fiddle (http://jsfiddle.net/k5Wan/3/)

我还更新了代码质量

var $promise = $.Deferred();

$promise.done(function() {
    alert("Done...");
});

$(function() {
    $("button").on("click", function() {
        $("#loading").show("slow", function() {
            $promise.resolve();
        });
    });
});

关于javascript - JQuery show() - 暂停函数直到执行回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23542142/

相关文章:

jquery - 对象不支持属性或方法 'slider'(Sharepoint 2010 中的 jquery)

matlab - 如何在 Matlab/GNU Octave 中停止使用 'run' 启动的脚本?

r - 停止执行另一个代码的代码

linux - 如何让linux在halt运行时断电?

javascript - 在 jQuery 语法中声明变量

javascript - 使用 CSV 创建可缩放的 d3.js 树形图

javascript - 如何将angular js集成到grails 2.3.4中?

javascript - React - 提交后更新输入值

jquery - Jquery 中的 Mechanize

javascript - 如何在滚动时从表格中获取第一个可见行