promise解决的问题以及它存在的问题和优化

promise解决了回调的问题。

多层嵌套可能会导致阅读性太低,程序不好维护,以及可能会存在回调过早过晚,回调次数过多过少的问题等问题。

 

因为即使是立即完成的Promise,也总会被异步调用,插在事件队列的末尾。

Promise 创建对象调用resolve(..) 或 reject(..) 时,这个Promise 的 then(..) 注册的观察回调就会被自动调度。这些被调度的回调在下一个异步事 件点上一定会被触发;

promise本身只能被决议一次,所以不会存在调用次数过多的问题,除非你注册了多次观察的回调。

 

如果拒绝一个 Promise 并给出一个理由(也就是 一个出错消息),这个值就会被传给拒绝回调。

 

如果成功的观察回调出现异常或者错误。有可能会被Promise吞掉,

async/await是基于Promise实现的,

Async/Await较Promise优势:

减少了代码量,提高了代码可读性;

 

const makeRequest = () => {
  return promise1()
    .then(value1 => {
      return promise2(value1)
        .then(value2 => {        
          return promise3(value1, value2)
        })
    })
}


const makeRequest = async () => {
  const value1 = await promise1()
  const value2 = await promise2(value1)
  return promise3(value1, value2)
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值