js-promise

什么是promise?
具有then方法的对象即是promise

let p
p = {
  then: function(resolve, reject) {
    // resolve(1) // 只能有一种状态,一旦确定不可更改
    reject(1)
  }
}

then方法的两个函数,success,fail


p = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('success')
    // reject('fail')
  }, 500);
})
Promise.resolve(p)
.then(r => {
  console.log('data')
  console.log(r)
}, e => {
  console.log('err')
  console.log(e)
})

获取异步错误, try-catch只能获取同步错误
分离回调:所有的promise最后都加上catch,如果没有传入处理函数,错误会被吞掉.这样导致不会报错,即出错很难,但可能是个坑.这是错误处理思想从结果最坏到结果最好情况的转变.
以往的错误处理,比如nodeJs中的回调设计err-first,缺点:多级回调会形成回调地狱.

cb(err,data) {
  if(err) return false
  // 成功,处理data
}

promise.catch是then的第二个函数

p = {
  then: function(resolve, reject) {
    resolve('success')
    // reject('fail')
  }
}
Promise.resolve(p)
.then(r => {
  console.log('res')
  console.log(r)
})
.catch(e => {
  console.log('catch err')
  console.log(e)
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值