ES6生成器和Promise三

function * fun(arg) {
      console.log(arg);
      let one = yield'耳朵'
      console.log(one);
      // console.log(111);
      yield'眼睛'
      // console.log(222);
      yield'真奇怪'
      // console.log(333);
    }
    let iterator = fun('aaa')
    // console.log(iterator);
    console.log(iterator.next());
    console.log(iterator.next('BBB'));
    console.log(iterator.next());
    console.log(iterator.next());
    for(v of fun()) {
      console.log(v);
    }

生成器:

  • 是一个特殊函数,用于进行异步编程;声明:function * 函数名() {};使用的时候用一个变量接受,返回结果是一个迭代器对象,不可以直接调用,可以借用里面的返回变量.next()来进行运行:名称.next();
  • yield:算作函数代码的分隔符,将代码分隔成一块块的,通过每调用一次next()来依次向下输出;可以使用for of遍历函数内代码块,调用的是yield后面的表达式;
  • 生成器函数参数:生成器参数和函数一样正常传参,next方法也可以传递参数,第二次调next方法传入的实参将作为第一个yield的返回结果;
let p = new Promise((res,rej) => {
      setTimeout(function() {
        const data = '回调成功'
        const faild = '回调失败'
        const index = 0
        if(index === 1) {
          res(data)
        } else {
          rej(faild)
        }
        console.log(res,rej);
      },1000)
    })
    let result = p.then(value=> {
      console.log(value);
      return new Promise((res, rej) => {
        res('成功')
        // rej('失败')
      })
    }, reason => {
      console.log(reason);
    })
    console.log(p);
    console.log(Promise);
    console.log(result);

promise:

  • 异步编程新的解决方案;语法上Promise是一个构造函数;函数内部封装异步操作,返回成功或失败;类似使用该构造函数创建一个实例对象,Promise本身有一个蚕丝为回调函数,它的参数是resolve表示成功,reject表示失败,每次执行只能是两者中的其中一个;
  • Promise的then方法参数是两个回调函数,第一个回调函数参数为value,第二个回调函数reason;前面函数调用成功就会回调第一个回调函数,失败就会回调第二个函数;
  • then方法:返回结果是Promise对象,对象状态由函数的执行结果决定;1.如果回调函数中返回的结果是非Promise类型的属性,状态为成功,返回的值为对象的成功的值;2.返回是Promise对象,这个Promise的状态,就决定前者的返回状态,两者的成功和失败的值是一样的;
  • catch方法:参数为回调函数,和then的参数第二个回调函数一样;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值