Promise与 async和await

本文详细解析了Promise在ES6中的概念,如何封装异步任务,以及其then和catch的使用方法。重点介绍了async和await的配合,展示了如何通过Promise实现同步执行效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Promise

概念:PromiseES6语法中新增的一个类,用来创建一个诺言对象。
作用:主要用来实现对异步任务的封装,从而实现异步任务具备同步执行的顺序。诺言构造时接受一个回调函数作为参数,该回调函数用来定义对应的异步任务,同时回调函 存在参数,两个参数分别是resolverejectresolvereject本是上是两个函数。
resolve用来在异步任务成功时向外界传递成功信息,reject代表当异步任务执行失败时需要向外界同步的信息。外界如果想要获取成功信息需要调用then操作,如果需要获取失败信息,则需要通过catch捕获失败。
使用:
创建一个诺言对象。
// 定义一个诺言
  var promise = new Promise(function(resolve, reject) {
    //该回调函数用来完成需要执行的异步任务
    var timer = setTimeout(function() {
      var num = Math.floor(Math.random() * 2);
      if (num == 1) {
        //该任务成功执行
        resolve("诺言已实现");
      } else {
        // 该任务失败执行
        reject("诺言未实现");
      }
    }, 2000);
  });
  通过诺言对象向外界传递异步任务执行结果。
  //使用该诺言对象捕获实现结果
  promise.then(function(msg) {
    console.log(msg);
    return "买房成功";
  }).then(function(msg) {
    console.log(msg);
  }).catch(function(err) {
    console.log(err)
  });
注意:then方法用来返回诺言成功时对应的数据,catch用来捕获诺言失败时
对应的数据,then方法可以通过串行操作设置多个,每一个返回的数据都会
编程新的诺言被后一个then捕获。但是catch只有一个,一旦某一个诺言执行
失败,后面的buoyant都不再执行,直接执行catch

asyncawait

await直接修饰异步执行的任务对应的函数,但是修饰的函数返回值必须是Promise对象。
async修饰的函数,最终的返回结果是一个Promise对象,如果想要获取该函数内部返回的数据,此时需要调用then方法获取数据。
// 定义函数用来完成异步任务
  function startTask() {
    // 定义一个诺言
    var promise = new Promise(function(resolve, reject) {
      //该回调函数用来完成需要执行的异步任务
      var timer = setTimeout(function() {
        var num = Math.floor(Math.random() * 2);
        if (num == 1) {
          //该任务成功执行
          resolve("诺言已实现");
        } else {
          // 该任务失败执行
          reject("诺言未实现");
        }
      }, 2000);
    });
    return promise;
  }
  //调用函数
  async function start() {
    var data = await startTask();
    console.log('---------------------');
    console.log(data);
    return data;
  }
  //result是一个Promise对象
  var result = start();
  result.then(function(data) {
    console.log(data);
  });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码农键盘上的梦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值