繁体   English   中英

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

[英]jQuery promise .done() is firing immediately, not waiting for server to return

我正在尝试使用$ .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)
});

您需要传递一个对done的函数引用...相反,您要调用hideSpinner函数并将其返回的值作为done回调传递。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM