jQuery promise .done()会立即触发,而不是等待服务器返回
jQuery promise .done() is firing immediately, not waiting for server to return
我试图使用从我的$.post()函数返回的承诺的.done()事件。它所调用的服务器端函数需要5秒钟才能返回。问题是.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
函数并传递它返回的值作为完成回调。
promise.done(function(){
hideSpinner(img)
});
相关文章:
- 如何“;等待”;以便返回回调
- 等待's返回Promise而不是value
- 等待函数完成,然后将返回值分配给变量JS
- 正在等待HTTP调用从函数返回结果
- 如何使for循环等待回调返回值
- 我怎么能在Angular JS中等待,直到我的web服务返回
- 等待来自Javascript模态的“返回值”
- JS Geolocation等待成功后返回值
- 在测试之前,需要量角器等待服务返回
- JavaScript 如何让节点在返回 node.js/Node-RED 之前等待
- 等待加载的数据,然后在 AngularFire 0.9.0 中返回
- 在返回结果之前,我如何等待 jQuery.ajaxComplete in promise.done
- 等待从函数返回
- 为什么我的 XHR 调用等待对方返回响应
- 如何在从 Meteor.method 返回之前等待子进程结果
- simplemodal确认示例等待返回值
- 函数中的 js 函数并等待返回值
- AJAX异步回调工作正确,但我如何等待返回的值
- TS1057:异步函数或方法必须具有有效的可等待返回类型
- Javascript不等待返回值