http://blog.csdn.net/aitangyong/article/details/47066395
之前的文章"javascript异步代码的回调地狱"中提到了编写AJAX代码经常遇到的3个问题,现在我们看下如何利用then()解决第2个问题:如果AJAX请求之间存在依赖关系,我们的代码就会形成Pyramid of Doom(金字塔厄运)。比如我们要完成这样一件事:有4个供Ajax访问的url地址,需要先Ajax访问第1个,在第1个访问完成后,用拿到的返回数据作为参数再访问第2个,第2个访问完成后再第3个...以此到4个全部访问完成。按照这样的写法,似乎会变成这样:
- $.ajax({
- url: url1,
- success: function(data){
- $.ajax({
- url: url2,
- data: data,
- success: function(data){
- $.ajax({
- //...
- });
- }
- });
- }
- });
1.Deferred.then()相当于Deferred.done()、Deferred.fail()、Deferred.progress()的合体,可以同时注册3个状态下的回调函数。
- function success(data)
- {
- alert("success data = " + data);
- }
- function fail(data)
- {
- alert("fail data = " + data);
- }