pending、resolved、rejectedajax
var promis = new Promise(function(resolve,reject){ $.ajax({ url:'/api/something.json', method:'get', datatype:'json', success:(res) =>{ resolve(res) }, error:(err)=>{ reject(err) } }) }) promis.then(function(res){ console.log(res) }).catch(function(err){ console.log(err) });
鏈式調用,狀態變爲resolve
若是把下一步想要的東西return出去,便可讓下一個then使用json
var promise = new Promise(function(resolve,reject){ $.ajax({ url:'/api/poisearch.json', method:'get', datatype:'json', success:(res) =>{ resolve(res) }, error:(err)=>{ reject(err) } }) }) promise.then(function(res){ return res.data }).then(function(data){ return data.result; }).then(function(result){ console.log(result) });
上面的代碼還能夠借用箭頭函數簡寫成,極大提高了代碼的簡潔性和可讀性api
promise.then(res => res.data) .then(data => data.result) .then(result => console.log(result));
若是異步操做拋出錯誤,狀態就會變爲Rejected,就會調用catch方法指定的回調函數,處理這個錯誤。數組
多個Promise實例,包裝成1個,有點相似Array.prototype.every()
用法:promise
var p = Promise.all([p1, p2, p3]);
多個Promise實例,包裝成1個,有點相似Array.prototype.some()異步