现在使用 async/await 安全吗? [关闭]

Posted

技术标签:

【中文标题】现在使用 async/await 安全吗? [关闭]【英文标题】:Is it safe to use async/await now? [closed] 【发布时间】:2017-06-30 04:54:58 【问题描述】:

javascript 中使用 async-await 是否安全而不是 generators-promises 现在,知道语法尚未生​​成,并且 会随着 ES8 的发布而出现吗?

我可以指望哪些浏览器可用,不可用此语法的浏览器有多常见?我所说的安全是指没有像 babel 这样的转译器?

【问题讨论】:

“安全”是什么意思?对谁、在哪里、对什么可能性安全? 语法不会改变,但你会想要使用转译器很长一段时间。 “安全”是指转译还是转译? without some transpilers - 你想成为safe 的环境是什么?浏览器?绝对不是,几乎永远不会,直到世界决定 Internet Explorer 最终 - 节点,不支持它(还) 从长远来看,async/await 还没有正式发布。 【参考方案1】:

每当我有这样的问题时,我都会检查两个地方:

我可以使用网站:http://caniuse.com/#search=await

绿色节点:http://node.green/#async-functions

通常鼓励答案包含相关信息以避免链接失效。但具有讽刺意味的是,这个答案的问题恰恰相反:这个答案在上面的链接之前很久就会腐烂(下面的信息将变得无效)。所以总是先检查 caniuse 和 node.green:

来自 caniuse.com,截至 2019 年 4 月:

IE *:不支持(最常用的版本 = 11) Edge:从版本 15(最常用的版本 = 17)开始 Firefox:从版本 52(最常用的版本 = 65)开始 Chrome:从 55 版开始(最常用的版本 = 72) Safari:从 10.1 版开始(最常用的版本 = 12) Opera:从版本 42(最常用的版本 = 58)开始 iOS Safari:从 10.3 版开始(最常用的版本 = 12.1) Opera Mini *:不支持 Android 浏览器 *:从 5 开始(最常用的版本 = 4.4) Chrome for Android:从版本 55(最常用的版本 = 71)开始

从 node.green 截至 2019 年 4 月

Node.js:从 8.0.0 版开始

因此,取决于您认为可以接受的内容,它是安全的还是不安全的。请注意以下几点:

这个问题最初是在 2017 年提出的,我们已经走了很长一段路,所以现在使用 async/await 更加安全。 到 2019 年,大多数移动设备已经支持 async/await。 Node 8 于 2017 年 5 月发布,因此在 Node.js 上使用 async/await 应该是安全的,除非您的 Node.js 服务器非常过时。

【讨论】:

为 caniuse 数据添加了最常用的版本。似乎世界上使用最多的浏览器是 Chrome for android,全球使用率约为 25% 根据the release notes,Safari 10.1 在 macOS ios 的 Safari 中增加了对 ECMAScript 2016 和 ECMAScript 2017 的支持,包括对 async 和 await 的支持。

以上是关于现在使用 async/await 安全吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 promise 请求中使用 async/await 是不是更有效? [关闭]

使用 async/await 会创建一个新线程吗?

python 3.5 中的 async/await 关键字是不是受到 C# 中的 async/await 的启发? [关闭]

在 async/await 之后使用 .then 是一种好方法吗?

几乎在任何地方都可以使用 async/await 吗?

Oracle 托管驱动程序可以正确使用 async/await 吗?