@babel/插件提案-异步do表达式
非官方测试版翻译
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
async do { .. }表达式在_异步_上下文中执行代码块(包含一个或多个语句),该代码块内最后一条语句的完成值将成为_异步_代码的完成值。
示例
并行发起 HTTP 请求
JavaScript
Promise.all([
async do {
const result = await fetch('https://example.com/A');
await result.json()
},
async do {
const result = await fetch('https://example.org/B');
await result.json()
},
]).then(([a, b]) => {
console.log("example.com/A", a);
console.log("example.org/B", b);
})
将被转换为
JavaScript
Promise.all([
(async () {
const result = await fetch('https://example.com/A');
return await result.json()
})(),
(async () {
const result = await fetch('https://example.org/B');
return await result.json()
})(),
]).then(([a, b]) => {
console.log("example.com/A", a);
console.log("example.org/B", b);
})
安装
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/plugin-proposal-async-do-expressions
yarn add --dev @babel/plugin-proposal-async-do-expressions
pnpm add --save-dev @babel/plugin-proposal-async-do-expressions
bun add --dev @babel/plugin-proposal-async-do-expressions
用法
通过配置文件(推荐)
babel.config.json
{
"plugins": ["@babel/plugin-proposal-async-do-expressions"]
}
注意:此插件将 async do {} 转译为 ES2017 异步箭头函数 async () => {}。若目标环境为较旧引擎(如 Node.js 6 或 IE 11),请同时添加 @babel/plugin-transform-async-to-generator:
babel.config.json
{
"plugins": [
"@babel/plugin-proposal-async-do-expressions",
"@babel/plugin-transform-async-to-generator"
]
}
通过命令行
Shell
babel --plugins @babel/plugin-proposal-async-do-expressions script.js
通过 Node API
JavaScript
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-proposal-async-do-expressions"],
});