所以我一直在搞弄一些Jquery Ajax的Promise / Deffers等…,而且我遇到了一些我不完全理解的东西,与Jquery Ajax并不严格相关.
我总是这样声明和调用函数:
function foo1() { //sets function
alert('foo1');
}
foo1(); //calls function
但是,似乎我看到的代码越来越多,很多人都在声明如下函数,我只是复制并粘贴了一个示例,所以我不会错过任何东西:
var promise = $.ajax({
url: "/myServerScript"
});
promise.done(myStopAnimationFunction);
我了解上述内容,仅举一个例子.
问题是,将函数分配给变量是否更好?优点/缺点是什么?在什么情况下使用这种方式?
这段代码在什么时候调用了实际函数.是否
promise.done(myStopAnimationFunction);
调用ajax函数,然后调用回调,或者仅调用回调?
谢谢
解决方法:
在您的示例中,您正在将promise变量分配给$.ajax返回的值(这是一个jqXHR对象)
var promise = $.ajax({
url: "/myServerScript"
});
然后您会说,一旦完成,您就想要调用myStopAnimationFunction.由于$.ajax默认情况下是异步的,因此浏览器将跳过此操作,仅在请求完成后才调用myStopAnimationFunction.
promise.done(myStopAnimationFunction);
现在,使用myStopAnimationFunction;您总是可以执行以下操作:
promise.done(function(){
$('.loader').hide();
});
但是,如果您有经常使用的代码,请将其放在函数中,这样就无需重复自己(请参见DRY)-但是,这与jQuery无关.
您的示例与执行操作完全相同:
$.ajax({
url: "/myServerScript"
}).done(function(){
$('.loader').hide();
});