reference:
http://www.html-js.com/article/Study-JavaScript-jQuery-Deferred-and-promise-every-day
1.5版本之后,$.ajax()的返回对象实现了CommonJS的Promises/A接口。它包含了很多的内容。CommonJS标准定义了一系列通用的独立的接口。Promises/A+是其中的一个。它带来的好处不仅仅体现在jQuery中。例如,如果你编写Node.js代码,你也可能就经常需要用到这个接口。这是一件非常棒的事情。
使用Promises处理回调函数和前面的例子有所不同:
var promise = $.ajax({
url: "/myServerScript"
});
promise.done(mySuccessFunction);
promise.fail(myErrorFunction);
你也可以在一个then()函数中将done()和fail()函数合并起来。我们可以将上边的代码重写为以下形式:
var promise = $.ajax({
url: "/myServerScript"
});
promise.then(mySuccessFunction,myErrorFunction);