我正在尝试复制有关流式GeoJSONL文件的Brett Camper's code,这很复杂。
我试图逐步了解它的作用,但我真的不知道此语法的作用:
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
时会得到AsyncGenerator
。这就是AsyncGenerator
生成的:AsyncIterator
您可以用AsyncIterator
消费for 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