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()异步