• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

mandyGuan12

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

Generator

Generator函数是ES6提供的一种异步编程解决方案
.

Generator 对象由生成器函数返回并且它符合可迭代协议和迭代器协议。
Generator 是隐藏类 Iterator 的子类。

.
.
.
尝试一下:

const mall = function* () {
        yield 'apple'
        yield 'banana'
        yield 'cherry'
    }
     let food = ''
     for (let i of mall()) {
       food += i + ' '
     }
    console.log(food)
    


.
.
.
使用next()

const mall = function* () {
        yield 'apple'
        yield 'banana'
        yield 'cherry'
    }
    // let food = ''
    // for (let i of mall()) {
    //   food += i + ' '
    // }
    // console.log(food)
    const food = mall()


此处的done表示generator函数中有没有走完yield
.
.
..
使用forof

const mall = function* () {
        yield 'apple'
        yield 'banana'
        yield 'cherry'
    }
    // let food = ''
    // for (let i of mall()) {
    //   food += i + ' '
    // }
    // console.log(food)
    const food = mall()
    for (const iterator of food) {
        console.log(iterator);
    }

.
.
.
异步调用

<script>
    const findCity = function* () {
        yield axios('URL?p')
        yield axios('URL?p')
    }

    const logCity = findCity()

    logCity.next().value.then(res => {
        console.log(res.data.list)
        return logCity.next().value
    }).then(res => {
        console.log(res.data.list)
    })

</script>

posted on 2024-09-06 17:13  番茄仔Mandy  阅读(70)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3