Wil*_*een 7 javascript async-await deno
正在阅读deno的主页新的 JS 运行时
我看到了以下代码:
import { serve } from "https://deno.land/std@0.50.0/http/server.ts";
const s = serve({ port: 8000 });
console.log("http://localhost:8000/");
for await (const req of s) {
req.respond({ body: "Hello World\n" });
}
Run Code Online (Sandbox Code Playgroud)
我从未见过以下语法(for await):
for await (const req of s) {
req.respond({ body: "Hello World\n" });
}
Run Code Online (Sandbox Code Playgroud)
这种语法是什么?
它是特定于 deno 还是在这个 tc39 提案中找到的顶级等待?
编辑:为什么它被使用以外的的async功能?
Mar*_*nde 12
for await...of语句用于遍历异步迭代器,并serve返回一个异步迭代器,其中每次迭代将是一个新的传入请求。
它是特定于 deno 还是在这个 tc39 提案中找到的顶级等待?
不,它不是具体到杰诺,这是一个不同的建议比top-level await。
这是一个asyncIterator也适用于浏览器的简单示例(非 deno 独占)
const obj = {
async *[Symbol.asyncIterator]() {
for(let i = 0; i < 10; i++)
yield new Promise(resolve => setTimeout(() => resolve(i), 100));
}
};
(async() => {
// You don't need the wrapper if the environment
// supports top-level await, e.g: Deno
for await(const i of obj)
console.log(`${i}`, new Date())
})();Run Code Online (Sandbox Code Playgroud)
编辑:为什么它可以在异步函数之外使用?
因为 Deno 支持 top-level await
| 归档时间: |
|
| 查看次数: |
1885 次 |
| 最近记录: |