zoukankan      html  css  js  c++  java
  • Async/await语法糖实现(Generator)

    // generator也是一种迭代器(Iterator) 有next方法,并返回一个对象{value:...,done:...}

    function run(generatorFunction) {

    // 创造出迭代器,下面就可以操控迭代器开始迭代了
    const iterator = generatorFunction()

    (function handleNext(value){

    const next = iterator.next(value)
     
    if(next.done){
     
    return next.value
    } else {


    return Promise.resolve(next.value)
    .then(handleNext,(err)=>Promise.resolve(iterator.throw(err)).then(handleNext))
    }
    })()

    }



    run(function *(){
    try{
    const usersResponse = yield fetch(`${apiUrl}/users`)
    console.log(usersResponse)
    } catch (err){
    console.log(err)
    }
    })


    // 假想async 关键字就是执行了这个run函数,async函数里的内容就是用generator包裹住了,所有的await相当于yeild
  • 相关阅读:
    装配Bean
    百练
    东软小选拔
    俄罗斯乘法
    POJ
    ACdream
    javascript 链式作用域
    ie6/7 bug
    onreadystatechange 和 status
    瀑布流 <<转>>
  • 原文地址:https://www.cnblogs.com/eret9616/p/10891587.html
Copyright © 2011-2022 走看看