首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步/等待是否总是自动被承诺链所取代?

异步/等待是否总是自动被承诺链所取代?
EN

Stack Overflow用户
提问于 2022-09-21 07:18:55
回答 1查看 54关注 0票数 0

通常,承诺使用异步/等待重写链

代码语言:javascript
复制
   const f = () => Promise.resolve(1).then(a => a+1)

可以翻译成

代码语言:javascript
复制
   const f = async () => {
       const a = await Promise.resolve(1)
       return a+1
    }

如果我没有错的话,Javascript异步/等待是使用协同(比如生成器)实现的。

因此,在内部Javascript不会在执行之前将异步/等待代码转换为承诺链代码(不要考虑异步/等待语法糖)。

回顾一下断言要更改异步/等待到承诺链的我找到了一个播音器。这样做就是将异步/等待作为一种语法糖,在执行之前进行扩展。这样做比协同实现更有表现力。

现在我在想。

转换程序总是自动地重写每个异步/等待代码,而不会有任何问题吗?或者,在某些情况下,转移溢出不能自动产生与协同执行相同的结果?

以另一种方式回答同样的问题。为什么选择使用协同执行而不是转移到承诺链?因为转移溢出并不总是可能的?

EN

回答 1

Stack Overflow用户

发布于 2022-11-19 04:53:44

现在最好的解决方案是用TypeScript编写代码,并将target设置为ES5,然后将每个await/async都正确地替换为相应的Promise链。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73796783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档