一、什么是Promise
ES6中异步编程的一种解决方案,解决地狱回调,常用于网络请求
//使用setTimeout
setTimeout(()=>{
console.log('hello world')
},1000)
//Promise类的参数 >> 函数(resolve,reject)
//resolve、reject本身也是函数,resolve 调用then里的内容,reject调用catch中的内容
//将异步嵌套优化为链式处理 Promise.prototype.then 和 Promise.prototype.catch 方法返回promise 对象, 所以它们可以被链式调用。
new Promise((resole,reject)=>{
setTimeout(()=>{
//成功调用resolve
resolve('hello world')
//失败调用reject
reject ('error message')
},1000)
}).then(data=>{
//do sth with data
}).catch(err=>{
//do sth with error
})
二、Promise的三种状态
三、Promise的链式调用
new Promise(resolve,reject)=>{
setTimeout(()=>{
resolve('aaa')
},1000)
}).then(res=>{
//第一次处理代码
console.log(res)
//两种抛出错误信息示范
return Promise.reject('error massage')
//throw 'error massage'
}).then(res=>{
//第二次处理代码
console.log(res)
//resolve示范
return Promise.resolve(res + '111')
// return res+'111'
}).then(res=>{
//第三次处理代码
console.log(res)
}).catch(err=>{
console.log(err)
})
四、Promise的all方法
//数组遍历Promise对象
Promise.all([
new Promise((resolve,reject)=>{
$.ajax({
url:url1,
success:(data)=>{resolve(data)}
})
}),
new Promise((resolve,reject)=>{
$.ajax({
url:url2,
success:(data)=>{resolve(data)}
})
}),
]).then(results=>{
// 结果会返回出一个数组
console.log(results)
})