ES6 Promise的使用总结

1. 为什么要使用类Promise?

有时候我们需要对网络请求返回的数据进行处理,对处理好后的数据再次发送网络请求,再处理,再请求,不断循环。这是就会形成回调地狱,这使得后期对代码的维护以及对代码逻辑的判断变得极为困难。为了解决这一问题,Promise应运而生。

2. Promise 的基本使用

new Promise((resolve,reject)=>{
    setTimeout((data)=>{    //此处用setTimeout来模拟网络请求
      resolve(data)
      reject(err)
    },2000)
  }).then((data)=>{
  	console.log(data)
  }).catch((err)=>{
	console.log(err)  
  })
new Promise((resolve,reject)=>{
    setTimeout((data)=>{    //此处用setTimeout来模拟网络请求
      resolve(data)
      reject(err)
    },2000)
  }).then((data)=>{
  	console.log(data)
  },(err)=>{
	console.log(err)
	})

3. Promise 的链式调用

new Promise((resolve,reject)=>{
    setTimeout(()=>{
      resolve()
    },2000)
  }).then(()=>{
    console.log("hello world");
    return new Promise((resolve, reject)=>{
      setTimeout(()=>{
        resolve()
      },2000)
    }).then(()=>{
        console.log("hello python");
        return new Promise((resolve, reject)=>{
          setTimeout(()=>{
            resolve()
          },1000)
        }).then(()=>{
          console.log("hello vuejs");
        })
    })
  })
改进写法1:

new Promise((resolve,reject)=>{
    setTimeout(()=>{
      resolve("aaa")
    },2000)
  }).then((res)=> {
    console.log(res, '第一次处理结果');
    return Promise.resolve(res + '111')
  }).then((res)=>{
      console.log(res,"第二次处理结果");
      return  Promise.resolve(res+'222')
      }).then((res)=>{
        console.log(res);
  })
改进写法2:

new Promise((resolve,reject)=>{
    setTimeout(()=>{
      resolve("aaa")
    },2000)
  }).then((res)=> {
    console.log(res, '第一次处理结果');
    return res + '111'
  }).then((res)=>{
      console.log(res,"第二次处理结果");
      return res+'222'
      }).then((res)=>{
        console.log(res);
  })

4. Promise.all 的使用

使用场景:当我们处理一个任务同时需要两个或者多个请求全部完成,这种情况下可以使用Promise.all
Promise.all([
      new Promise(),
      new Promise(),
  ]).then((result)=>{})
Promise.all([
      new Promise((resolve, reject)=>{
        setTimeout(()=>{
          resolve({name:'chenchen',age:18})
        },1000)
      }),
      new Promise((resolve, reject)=>{
        setTimeout(()=>{
          resolve({name:'juzi',age:18})
        },2000)
      })
  ]).then((result)=>{
    console.log(result);
  })

Promise.all([])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值