好吧,自述文件被删除之前的最后一次修订已经提到了该段中的所有内容:
await* 和并行性
在生成器中,两者yield
都yield*
可以使用。在异步函数中,onlyawait
是允许的。的直接类比yield*
在异步函数中没有意义,因为它需要重复等待内部操作,但不知道每个等待传递什么值(因为yield*
,它只是传递 undefined 因为迭代器不接受传入的值)。
有人建议可以将语法重用于不同的语义 - 为Promise.all
. 这将接受一个作为 Promises 数组的值,并将(异步)返回由 Promise 返回的值数组。预计这将是最常见的与 Promise 相关的操作之一,在该提案的核心可用后还没有语法糖。
yield*
所以它不像人们所期望的那样直接类似,它没有真正的意义,它只是一个建议,但从未真正包含在规范提案中。
共识是没有理由引入比必要更多的语法糖,调用Promise.all
没有太大区别。
您可以查看issue 8或issue 29中的讨论。
最后,关于更强大武器(平行性)的提议仍在进行中。查看异步迭代、异步生成器和可观察对象。可能有些人可以使用await*
比简单的承诺数组更好的关键字。
async
/await
提议是最小的,只引入了必要的原语。没有关于可能的扩展的讨论,应该单独讨论。