gpt4 book ai didi

javascript - Deno 顶层等待

转载 作者:行者123 更新时间:2023-12-01 15:21:43 25 4
gpt4 key购买 nike

正在阅读 homepage 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" });
}

我从未见过以下语法( for await ):
for await (const req of s) {
req.respond({ body: "Hello World\n" });
}

这种语法是什么?

它是 deno 特有的,还是在 this 中找到的顶级等待tc39 提案?

编辑:为什么可以使用 async功能?

最佳答案

for await...of 语句用于遍历异步迭代器,serve返回一个异步迭代器,其中每次迭代都是一个新的传入请求。

Is it specific to deno or is it a top-level-await found in this tc39 proposal?



不,它不是 Deno 特有的,它是 different proposaltop-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())

})();



Edit: Why can it be used outside of an async function?



因为 Deno 支持 top-level await

关于javascript - Deno 顶层等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61916839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com