1- then

  1. # then 之后返回的 Promise的状态是 fulfilled 如果遇到错误,状态会变为 rejected
  2. # then 只能触发promise-->fulfilled的状态
  1. var p = Promise.resolve(100).then((res)=>{
  2. console.log(res)
  3. })
  4. console.log(p) // resolved
  5. var p = Promise.resolve(100).then((res)=>{
  6. console.log(res)
  7. throw "err"
  8. })
  9. console.log(p) // reject状态
  10. var p = Promise.resolve(100).then((res)=>{
  11. console.log(res)
  12. throw "err"
  13. })
  14. p.then(()=>{ // 报错了
  15. console.log(200)
  16. })

2- catch

  1. catch 之后返回的promise的状态 正常情况下是 fulfilled ,如果有错误,状态为rejected
  1. var p = Promise.reject(100).catch(res=>{
  2. console.log(res)
  3. })
  4. console.log(p) // fulfilled 状态
  5. var p = Promise.reject(100).catch(res=>{
  6. console.log(res)
  7. throw "err"
  8. })
  9. console.log(p) // rejected状态

3- 总结 练习

  1. then catch
  2. 1.得到的结果都是Promise
  3. 2.正常情况下状态都是fulfilled,遇到错误状态为rejected
  1. var p = Promise.reject(100).catch(res=>{
  2. console.log(res)
  3. })
  4. p.catch(()=>{
  5. console.log(200)
  6. }).then(()=>{
  7. console.log(300)
  8. }).catch(()=>{
  9. console.log(400)
  10. })
  11. // 100 300
  12. var p = Promise.reject(100).catch(res=>{
  13. console.log(res)
  14. })
  15. p.catch(()=>{
  16. console.log(200)
  17. }).then(()=>{
  18. console.log(300)
  19. throw "err"
  20. }).catch(()=>{
  21. console.log(400)
  22. }).then(()=>{
  23. console.log(500)
  24. })
  25. // 100 300 400 500

4- async-await中的错误处理

  1. await 只能得到Promise--fulfilled状态的结果,作用相当于 then 函数
(async ()=>{
  var p = Promise.reject("err")

  try{
    let res = await p
    console.log(res)
  }catch(err){
    console.log(err)
  }
})()