JavaScript Promise理解


使用promise对象拆解回调地狱

大致流程如下

创建订单,

根据订单号创建VIP

根据VIP创建授权协议

Promise调用成功调用resolve函数

失败调用rejected函数

let order = orderid => new Promise((resolve, rejected) => {
  setTimeout(() => {r(orderid)}, 100)
})

let addvip = orderid => new Promise((resolve, rejected) => {
  if (orderid !== '')//根据订单号判断返回模拟vipid
    setTimeout(() => r('vipid-456'), 200)
})

let createauth = vipid => new Promise((resolve, rejected) => {
  if (vipid !== '')//根据vipid判断返回模拟授权码
    setTimeout(() => r('auth-789'), 300)
})

order('123')//模拟后端生成的订单号
.then(addvip)//订单生成成功后添加vip
.then(createauth)//VIP成功后添加授权
.then((authid)=>console.log(authid)//最后显示授权码
).catch(err=>console.log(err))//异常中间任意异步调用rejected都会直接运行catch,从而跳过其他步骤