一、Deferred讲解
这篇文章讲的更好http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html
二、具体解决嵌套调用问题
- var promise1 = $.ajax(url1);
- var promise2 = promise1.then(function(data){
- return $.ajax(url2, { "data": data });
- });
- var promise3 = promise2.then(function(data){
- return $.ajax(url3, { "data": data });
- });
- promise3.done(function(data){
- // data retrieved from url3
- });
三、另一种写法,使用pipe
$.ajax("your/url", {
dataType: "json"
}).pipe(function(theOriginalData) {
return $.ajax("your/web/service/doSomethingWith", {
data: theOriginalData,
dataType: "json"
});
}).done(function(theFinalData) {
$.each(theFinalData, function(key, value) {
$("#" + key).val(value);
});
});