有时我们要进行一些相互间有依赖关系的异步操作,比如有多个请求,后一个的请求需要上一次请求的返回结果。就可以使用这个 promise了。具体实现:
var funC1 = function() {
var f = new Promise(function(resolve, reject) {
$.ajax({
type: "GET",
url: "xxx",
data: {},
success: function(data) {
resolve(data);
},
error: function(data) {
reject();
}
});
});
return f;
}
var funC2 = function(data) { // data 是funC1 返回的
var f = new Promise(function(resolve, reject) {
$.ajax({
type: "GET",
url: "xxx",
data: {},
success: function(data) {
resolve(data);
},
error: function(data) {
reject();
}
});
});
return f;
}
var funC3 = function(data) { // data 是funC2 返回的
var f = new Promise(function(resolve, reject) {
$.ajax({
type: "GET",
url: "xxx",
data: {},
success: function(data) {
resolve(data);
},
error: function(data) {
reject();
}
});
});
return f;
}
funC1()
.then( // funC1 的回调
function(data) {
return funC2(data);
},
function() {
console.log('funC1 失败回调');
}
)
.then( // funC2 的回调
function(data) {
return funC3(data);
},
function(data) {
console.log('funC2 失败回调');
}
)
.then( // funC3 的回调
function(data) {
console.log(data);
},
function(data) {
console.log('funC3 失败回调');
}
);