then

  1. # then 之后返回的 Promise的状态是resolved 如果遇到错误,状态会变为 reject
  2. # then 只能触发promise-->resolved的状态
  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. })

catch

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

总结 练习

  1. then catch
  2. 1.得到的结果都是Promise
  3. 2.正常情况下状态都是resolved,遇到错误状态为reject
  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

async-await中的错误处理

  1. await 只能得到Promise--resolved状态的结果,作用相当于 then 函数
  1. (async ()=>{
  2. var p = Promise.reject("err")
  3. try{
  4. let res = await p
  5. console.log(res)
  6. }catch(err){
  7. console.log(err)
  8. }
  9. })()