ES6 promise对象

解决异步问题

    1. 回调函数的方式

1 function func(callback){
2 setTimeout(()=>{
3 callback("异步数据")
4 },1000)
5 }
6 func(function (res){
7 console.log(res)
8 })

    2. 通过Promise解决异步问题

这个是ES6新出的解决异步问题的语法,通过promise可以避免回调函数产生的回调地域的问题
 
  • 怎么使用Promise

1 let pro = new Promise((reslove,reject)=>{
2 // 异步操作放在这个里面,一旦创建promise对象,就会执行这里的代码 
3 // 通过 reslove标识执行成功 reslove(参数). 这里reslove的参数, 
4 // 通过reject标识失败, reject(参数)
5 })
6 pro.then(res=>{
7 // 这个res就是reslove的时候括号里写的数据}).catch(err=>{
8 // 这个err就是reject的时候括号里的数据
9 })
    • promise的状态只会变化一次
      • pendding: 等待
      • fulfilled(resloved) : 成功
      • rejected: 失败
 
  • promise的链式调用   promise通过链式调用解决回调地域的问题
    • Promise的.then方法返回的还是一个Promise对象,这个Promise的状态是由上一个.then方法中函数的返回值的决定
      • pro.then(res=>{})
      • 上一个.then返回了一个Promise对象。 这里得到的状态就和这个Promise对象一样
      • 上一个.then返回了一个非Promise对象。可以直接在后续函数拿到这个数据
    • Catch() 方法  只接受一个参数,对操作异常后进行处理
      • pro.catch(err=>{})
  • promise两个API
    • Promise.all()    所有Promise都执行完了在进行一些操作

Promise.all([promise1,promise2,promise3]).then(results=>{
// 获取所有Promise的结果 console.log(results);
})
    •  Promise.race()    有一个执行完了就进行一些操作
// 有任何一个Promise完成了就结束Promise.race([promise1,promise2,promise3]).then(res=>{
// 拿到的是第一执行完的结果 console.log(res);
})
 
posted @ 2020-09-04 11:01  帅气巴巴  阅读(176)  评论(0编辑  收藏  举报