学习ES6day05的笔记

ES6-day05
  ES5异步编程的解决方案
  $.ajax({
    url,
    method,
    data,
    success(res) {
      console.log(res)
      $.ajax({
        url,
        method,
        data: res.data[0].id,
        success() {
          
        }
      })
    }
  })

  1.Promise
    Promise 是异步编程的一种解决方案,比传统的解决方案(回调函数和事件)更合理和更强大。
    它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。
    所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。
    Promise对象,可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。
    Promise对象提供统一的接口,使得控制异步操作更加容易。
    1)创建Promise实例
      // 实例化
      Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject,它们是两个函数
      Promise对象代表一个异步操作有三种状态: pending(进行中)、fulfilled(已成功)和rejected(已失败)。
      状态发生改变之后就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved(已定型)
      let promise = new Promise((resolve, reject) => {
        if(1 > 0) {
          // pending => fulfilled
          resolve('success');
        } else {
          // pending => rejected
          reject('error')
        }
      })
      // 访问promise实例内部的状态
      promise.then(res => {
        console.log(res)
      }).catch(error => {
        console.error(error)
      })
    2)实例方法
      .then()
        // promise状态为fulfilled
        参数:函数,函数内部的参数是resolve传过来的实参
      .catch()
        // promise状态为rejected
        参数:函数,函数内部的参数是reject传过来的实参
      .finally()
        无论promise状态是成功还是失败,都会执行里面的代码
    3)静态方法
      Promise.all([pro1,pro2])
        将pro1和pro2包装成数组作为实参传递进去
        返回值:promise对象。结果 =》pro1,pro2都成功才成功,有一个失败就失败
      Promise.race([pro1,pro2])
        将pro1和pro2包装成数组作为实参传递进去
        返回值:promise对象。结果 =》pro1,pro2谁先回来就用谁都结果(无论成功或者失败)
      Promise.any([pro1,pro2])
        将pro1和pro2包装成数组作为实参传递进去
        返回值:promise对象。结果 =》pro1,pro2都失败才失败,有一个成功就成功
      Promise.resolve()
        参数:任意
        返回值:状态为fulfilled的promise对象
      Promise.reject()
        参数:任意
        返回值:状态为rejected的promise对象
  2.Generator
    是ES6的异步编程解决方案
    类似于状态机,内部封装了多个状态
    返回值:迭代器对象
    通过调用.next()方法,访问迭代器对象内部的状态

    使用:
      function* genFun() {
        let result = yield 'one'

        console.log(result); // hello
        yield 'two'

        retrun 'others'
      }
      let gen = genFun(); // gen是generator函数返回的迭代器对象
      gen.next();
      gen.next('hello')
  3.async
    async函数是generator函数的语法糖
    是ES6的异步编程解决方案
    关键字
      function关键字前加上 async(异步)
      异步请求之前,加上 await(等待)
    使用
      async function findAll() {
        let result = await $.get('......');
        console.table(result.data)
      }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值