为什么从异步/等待提案中删除了 await*
Why was await* removed from the async/await proposal?
似乎唯一记录的地方是这个问题线程和实际规范。但是,删除的原因没有发布在我能找到的任何地方。
新推荐的方式似乎await Promise.all()
,但我很好奇为什么await*
被删除。
好吧,自述文件被删除之前的最后一个修订版已经提到了该段落中的所有内容:
等待* 和并行性
在发电机中,可以使用
yield
和yield*
。异步 函数,只允许await
。yield*
的直接类似物 在异步函数中没有意义,因为它需要 反复等待内部操作,却不知道该值什么 传入每个等待(对于yield*
,它只是传入未定义的 因为迭代器不接受传入值(。有人建议该语法可以重用于不同的 语义 -
Promise.all
糖 .这将接受一个值 一个 Promise 数组,并且会(异步(返回一个数组 承诺返回的值。预计这将是 最常见的与 Promise 相关的操作,但还没有语法 在此提案的核心之后的糖是可用的。
因此,它不像人们所期望的那样直接类似于yield*
,它并没有真正的意义,它只是一个建议,但从未真正包含在规范提案中。
共识是,没有理由引入不必要的语法糖,调用Promise.all
没有太大区别。
您可以查看问题 8 或问题 29 中的讨论。
最后,关于更强大武器(平行(的提议仍在进行中。查看异步迭代、异步生成器和可观察量。可能有一些可以使用 await*
关键字比简单的 promise 数组好得多。
async
/await
提案是最小的,只引入了必要的原语。没有关于可能的扩展的自行车棚,这应该单独讨论。
相关文章:
- 使用php或javascript从facebook相册URL中删除多余的部分
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 如何删除多行HTML排列中的空白
- 如何从rails中的代码中删除新行( )
- 删除对HTML元素的拖动
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 按顺序添加和删除类
- iframe正在添加标签,需要删除它们
- 如何在HTML输入字段中添加不可删除的后缀
- addData()从最新图表中删除.js 2.1.3-怎么了
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 删除CKEditor工具栏按钮,但不删除功能
- 当浏览器上的后退按钮到达主页时,我需要删除Class
- 正在删除node.js中已验证的网站
- 正在从页面中删除iframe
- 如何从 HTML 查询中删除项目
- 如何在iOS应用程序中从Firebase中删除超过6小时的数据
- 未捕获的类型错误:无法读取属性'删除'的未定义
- 在不知道深度或父属性的情况下从对象中删除属性
- 解析JSON并从中删除对象会出错