// ajax使用promise后的写法
$.ajax("https://api.github.com/users/webhj")
.done(function(data) {
alert(data.name)
})
.fail(function(fail) {
console.log(JSON.parse(fail.responseText).message)
})
/* var a1=$.Deferred();
var a2=$.Deferred();
$.when(a1,a2).done(function (a1,a2) {
console.log(a1);
console.log(a2);
})
a1.resolve(8);
a2.resolve(9);*/
function success(data) {
console.log("success data = " + data);
}
function fail(data) {
console.log("fail data = " + data);
}
function progress(data) {
console.log("progress data = " + data);
}
function always(data) {
console.log("always data = " + data);
}
var deferred = $.Deferred();
// 一起注册回调
//deferred.then(success, fail, progress);
// 分别注册回调
deferred.done(success);
deferred.fail(fail);
deferred.progress(progress);
//always都会被调用
deferred.always(always);
deferred.notify("10%");
deferred.resolve("ok");
deferred.reject("fail");
/* var df1 = $.Deferred();
console.log(df1.state());//pending
var df2 = $.Deferred();
df2.resolve(); //resolved
console.log(df2.state());
var df3 = $.Deferred();
df3.reject();
console.log(df3.state());//rejected*/
/*
var df = $.Deferred();
df.done(function(){alert("first");})
.fail(function(){alert("fail");});
df.done(function(){alert("second");});
df.done(function(){alert("third");});
//df.reject();
df.resolve();
*/
//依次调用
var url1 = 'https://api.github.com/users/hgzr';
var url2 = 'https://api.github.com/users/430527';
var url3 = 'https://api.github.com/users/webhj';
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) {
var datas = data;
$('h2').html(datas.name)
$('address').html(datas.blog)
});
//共同调用,当ajax1和ajax2操作都成功的时候,会调用onDone回调函数。
var promise1s = $.ajax(url1),
promise2s = $.ajax(url2),
promiseCombined = $.when(promise1s, promise2s);
promiseCombined.done(onDone);
function onDone(a, b) {
console.log(a, b, 1)
}
<h2></h2>
<address></address>
External resources loaded into this fiddle: