ES6 Promise和async await用法小节和try和catch的用法

为什么会有promise?

  • 之前处理异步是通过纯粹的回调函数的形式进行处理
  • 很容易进入到回调地狱中。
  • 问题可以解决,但是难以读懂,维护困难
  • 稍有不慎就会踏入回调地狱 - 嵌套层次深,不好维护

Promise的注意点

.then()

当promise状态发生改变,就会触发then()里的响应函数处理后续步骤;

如果返回新的promise,那么下一级.then()会在新的promise状态改变之后执行

如果返回其他任何值,则会立即执行下一级.then()

.chtah()

错误响应时候返回内部值

用法:解决了回调地狱的问题

// 需求:当我获取到服务器传回来的地址后,我才能发送第二个ajax
function fn(url) {
   let p = new Promise((resolve, reject) => {
       axios({
          url: url,
          method: "get",
         }).then((res) => {
           //成功回调
           // console.log(res.status);
           // 成功获取服务器发送过来的ajax
           if (res.status == 200) {
            // 成功响应
            // resolve(res.data.list[i].goods_img):意思就是我这个Promise:P自带参数
            //resolve为操作成功时
           resolve(res.data);
          }
         });
        });
       // 调用函数之后必须要有返回值,
       //这里要返回一个Promise,在里面有从服务器接收到的信息
       return p;
   }
    
   fn("https://www.escook.cn/api/cart")
   .then((rs) => {
    // console.log(rs);
    // 我从服务器获取到的rs地址
    // return之后继续获取ajax服务器信息
    return fn("https://www.escook.cn/api/cart");
     })
    .then((rs) => {
    console.log(rs);
    });

Promise 配合 async await使用

 async function fn1() {
       function fn(url) {
       let p = new Promise((resolve, reject) => {
         axios({
           url: url,
           method: "get",
        }).then((res) => {
        //成功回调
        // console.log(res.status);
        // 成功获取服务器发送过来的ajax
         if (res.status == 200) {
         // 成功响应
          resolve(res.data);
          }
        });
      })
    // 调用函数之后必须要有返回值,这里要返回一个Promise,在里面有从服务器接收到的信息
    return p;
   }
   let a = await fn("https://www.escook.cn/api/cart");
   let b = await fn("https://autumnfish.cn/api/joke/list?num=1");
   console.log(a);
   console.log(b);
    }

async await 和 promise 的区别

  1. async/await 出现的异常是无法捕获的,需要借助 try/catch 来捕获异常
  2. 任何一个await后面的promise对象变为reject,那么整个async都会被中断
  3. 使用 async await 的话,catch 能处理 JSON.parse 错误

try和catch的用法

try 语句使你能够测试代码块中的错误。

catch 语句允许你处理错误。

finally 使你能够执行代码,在 try 和 catch 之后,无论结果如何。

try{
   代码块;
 } catch(参数){
   处理错误并执行
 }finally{
   无论try catch结果如何还是继续执行
 }

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个好好的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值