javascript - jQuery promise .done() 立即触发,不等待服务器返回

标签 javascript jquery

我正在尝试使用从我的 $.post() 函数返回的 promise 的 .done() 事件。它调用的服务器端函数需要五秒钟才能返回。问题是 .done() 事件立即触发,就好像它已经完成了一样。请参阅下面的代码。如果我定义一个与 .post() 调用内联的成功函数,它可以正常工作,只是 promise 对象上的 .done() 事件会立即发生。知道我错过了什么吗?

    $(document).ready(function () {

        $("img.spinner").hide();

        var hideSpinner = function (img) {
            $(img).hide();                
        }

        $("button.Update").click(function () {

            var img = $(this).siblings("img.spinner").show();

            var promise = $.post('/MyFunc/Func',
                function(){
                    $(img).hide();
                }
                );

            promise.done(hideSpinner(img));

        });


    })

最佳答案

那是因为 hideSpinner(img) 调用了 hideSpinner 函数。它是一个函数调用,而不是对函数的引用。试试这个:

promise.done(function () {
    hideSpinner(img)
});

关于javascript - jQuery promise .done() 立即触发,不等待服务器返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22599034/

相关文章:

javascript - jquery 单击 div 上的绑定(bind),影响驻留在其中的文本框

javascript - 我们如何检测网页上的图像加载完成?

javascript - 如何正确地将具有多个元素的新对象推送到数组中?

javascript - 创建一个没有页面刷新的基本可滚动缩略图 slider

javascript - 我可以使用 Web Workers 做什么?

javascript - 在 angularjs 中无法将 .docx 转换为 blob

php - 如何在 PHP 文件执行期间调用 javascript 文件。

javascript - jQuery eq() 选择器不工作

javascript - 获取 "ID"和 "HREF"属性并创建一个 JSON 对象

jquery - 当部分 jquery hover() 时,CSS 菜单失去焦点