直接上代码:
$.ajax({
url: '/a.do',
type: 'post',
data: {
foo: 'bar'
}
}).done(function(res) {
return $.ajax({
url: '/b.do',
type: 'post',
data: {
foo: res.bar
}
})
}).done(function(res) {
console.log(res); //undefined
})
第二个ajax请求是依赖第一个ajax请求结果的,现在想使用ajax自带的deferred,发现第二个done里面的内容根本就不会去等待第二个ajax请求完,我推测了一下应该是因为这一整个deferred链条的状态在第一个done的时候就变成了resloved,所以压根就不管第二个异步ajax了。
所以想请教下,假如我不想用ES6 的promise,而就借助jQuery自带的deferred,应该如何实现如上代码。
把第三个done写到第二个done里面的ajax后面看看