我正在尝试复制Brett Camper关于流式传输 GeoJSONL 文件的代码,它非常复杂。
我正在尝试逐步了解它的作用,但我真的无法弄清楚这种语法的作用:
streamGeoJSONL = async ƒ*(url)
任何人都可以向我解释一下吗?如果可能的话,我想在Mozilla web docs上找到一些关于它的信息。
另外,如果有人可以向我解释给定示例中的代码流程,我将非常感激!
谢谢!
我正在尝试复制Brett Camper关于流式传输 GeoJSONL 文件的代码,它非常复杂。
我正在尝试逐步了解它的作用,但我真的无法弄清楚这种语法的作用:
streamGeoJSONL = async ƒ*(url)
任何人都可以向我解释一下吗?如果可能的话,我想在Mozilla web docs上找到一些关于它的信息。
另外,如果有人可以向我解释给定示例中的代码流程,我将非常感激!
谢谢!
每当您看到语法async function*
时,就意味着该函数是AsyncGenerator。您可以AsyncGenerator
使用for await...of在其生成的AsyncIterator
async function* streamGeoJSONL(url) {...} // AsyncGenerator
const url = "https://s3.amazonaws.com/vtiles/honolulu_hawaii.geojsonl"
streamGeoJSONL(url) // => AsyncIterator
AsyncIterator
当你调用 an 时,你会得到一个AsyncGenerator
。这就是AsyncGenerator
生成:一个AsyncIterator
您可以使用AsyncIterator
withfor await...of
for await (const newFeatures of streamGeoJSONL(url)) {/* do stuff with newFeatures */}
在您的示例中,newFeatures
采用关键字发回的yield
值streamGeoJSONL
async function* streamGeoJSONL(url) {
// ...
yield lines.map(JSON.parse) // this is newFeatures
} // AsyncGenerator