在异步生成器函数中是否需要等待?

我是阿斯顿

MDN有一个示例,其中生成器功能标记为asyncyield不带时使用await

为什么await在此示例中没有必要?

const myAsyncIterable = {
    async* [Symbol.asyncIterator]() {
        yield "hello"
        yield "async"
        yield "iteration!"
    }
}
一定的表现

仅仅因为一个函数async并不意味着await是必需的。我认为该示例async仅表明您可以轻松地将awaited Promise插入其中。

有什么Symbol.asyncIterator可以异步遍历如果需要的话,但它不具有有任何异步操作。您甚至可以在Symbol.asyncIterator属性上用标准生成器函数替换异步函数,并且仍然可以正常工作:

const myAsyncIterable = {
    *[Symbol.asyncIterator]() {
        yield "hello"
        yield "async"
        yield "iteration!"
    }
};

(async () => {
  for await (const item of myAsyncIterable) {
    console.log(item);
  }
})();

查看规范,从对象检索迭代器之后,迭代器是同步还是异步都没有关系。异步生成器函数将导致异步迭代器;同步生成器功能将导致同步迭代器。见规格的最后一个步骤7这里- GetIterator将被调用,不管对象是在Symbol.asyncIterator将被退回,如果存在的话,不考虑它是否真的异步与否的。

随着迭代器,当与遍历for await由迭代返回的每个值将被await

b。如果iteratorKind是异步的,则将nextResult设置为?Await(nextResult)

对于await不是Promise的东西来说,这是完全可以的,这很奇怪:

(async () => {
  const item = await 'foo';
  console.log(item);
})();

await 如果右边的表达式是Promise,将解开Promise,否则将保持不变。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

您是否需要等待异步方法?

来自分类Dev

从生成器迁移到异步/等待

来自分类Dev

传递异步方法是否真的需要等待/异步模式?

来自分类Dev

使用承诺或生成器函数等待元素在 DOM 中

来自分类Dev

无需等待即可从异步函数生成器生成值

来自分类Dev

如何声明异步生成器函数

来自分类Dev

是否需要等待异步写入单个文件?

来自分类Dev

我的哪个函数声明更好?生成器还是异步/等待?

来自分类Dev

Javascript 中的异步生成器:产生 Promise 和产生等待的 Promise 之间有区别吗?

来自分类Dev

同时等待2个(或更多)异步生成器

来自分类Javascript

检查函数是否是生成器

来自分类Dev

是否有任何理由在异步/等待上使用基于Python的基于生成器的协程?

来自分类Dev

理解 Python 中的生成器函数

来自分类Dev

在暂停函数中调用协程生成器(启动,异步)时,coroutineContext不明确

来自分类Dev

如何在异步生成器函数中引发错误

来自分类Dev

如何将此函数转换为异步生成器

来自分类Dev

Javascript异步生成器

来自分类Dev

TypeScript:异步生成器

来自分类Dev

生成器/异步 lambda

来自分类Dev

异步方法中的最后一个异步调用需要等待吗?

来自分类Dev

GA中的Elistism:该步骤是否需要应用生成器运算符

来自分类Dev

为什么我需要先将生成器函数存储到变量中?

来自分类Dev

在部署HttpClient之前,我是否需要等待异步方法完成?

来自分类Dev

如果需要等待连接,是否应该执行主要异步操作?

来自分类Python

如何在Python中创建异步生成器?

来自分类Dev

UseEffect 中的异步生成器 - 如何取消订阅更新

来自分类Dev

从Python 3中的异步生成器继续

来自分类Dev

Python异步生成器不异步

来自分类Dev

从异步生成器获取可迭代生成器

Related 相关文章

  1. 1

    您是否需要等待异步方法?

  2. 2

    从生成器迁移到异步/等待

  3. 3

    传递异步方法是否真的需要等待/异步模式?

  4. 4

    使用承诺或生成器函数等待元素在 DOM 中

  5. 5

    无需等待即可从异步函数生成器生成值

  6. 6

    如何声明异步生成器函数

  7. 7

    是否需要等待异步写入单个文件?

  8. 8

    我的哪个函数声明更好?生成器还是异步/等待?

  9. 9

    Javascript 中的异步生成器:产生 Promise 和产生等待的 Promise 之间有区别吗?

  10. 10

    同时等待2个(或更多)异步生成器

  11. 11

    检查函数是否是生成器

  12. 12

    是否有任何理由在异步/等待上使用基于Python的基于生成器的协程?

  13. 13

    理解 Python 中的生成器函数

  14. 14

    在暂停函数中调用协程生成器(启动,异步)时,coroutineContext不明确

  15. 15

    如何在异步生成器函数中引发错误

  16. 16

    如何将此函数转换为异步生成器

  17. 17

    Javascript异步生成器

  18. 18

    TypeScript:异步生成器

  19. 19

    生成器/异步 lambda

  20. 20

    异步方法中的最后一个异步调用需要等待吗?

  21. 21

    GA中的Elistism:该步骤是否需要应用生成器运算符

  22. 22

    为什么我需要先将生成器函数存储到变量中?

  23. 23

    在部署HttpClient之前,我是否需要等待异步方法完成?

  24. 24

    如果需要等待连接,是否应该执行主要异步操作?

  25. 25

    如何在Python中创建异步生成器?

  26. 26

    UseEffect 中的异步生成器 - 如何取消订阅更新

  27. 27

    从Python 3中的异步生成器继续

  28. 28

    Python异步生成器不异步

  29. 29

    从异步生成器获取可迭代生成器

热门标签

归档