我正在尝试使用从我的 $.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/