@babel/plugin-proposal-async-do-expressions
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
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
使用
使用設定檔(建議)
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"
]
}
透過 CLI
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"],
});