异步迭代器和生成器:Streaming GeoJSONL
Async iterators and generators: Streaming GeoJSONL
我正在尝试复制 Brett Camper's code 关于流式 GeoJSONL 文件的内容,它非常复杂。
我正在逐步了解它的作用,但我真的无法弄清楚这个语法的作用:
streamGeoJSONL = async ƒ*(url)
谁能给我解释一下?如果可能的话,我想在 Mozilla web docs.
上找到一些相关信息
此外,如果有人能向我解释给定示例中的代码流程,我将不胜感激!
谢谢!
只要你看到语法 async function*
,就意味着该函数是一个 AsyncGenerator。您可以通过在其生成的 AsyncIterator
上使用 for await...of 来使用 AsyncGenerator
async function* streamGeoJSONL(url) {...} // AsyncGenerator
const url = "https://s3.amazonaws.com/vtiles/honolulu_hawaii.geojsonl"
streamGeoJSONL(url) // => AsyncIterator
当您调用 AsyncGenerator
时,您会得到一个 AsyncIterator
。这就是 AsyncGenerator
生成的:一个 AsyncIterator
您可以用 for await...of
消耗一个 AsyncIterator
for await (const newFeatures of streamGeoJSONL(url)) {/* do stuff with newFeatures */}
在您的示例中,newFeatures
取 streamGeoJSONL
中关键字 yield
发回的值
async function* streamGeoJSONL(url) {
// ...
yield lines.map(JSON.parse) // this is newFeatures
} // AsyncGenerator
我正在尝试复制 Brett Camper's code 关于流式 GeoJSONL 文件的内容,它非常复杂。
我正在逐步了解它的作用,但我真的无法弄清楚这个语法的作用:
streamGeoJSONL = async ƒ*(url)
谁能给我解释一下?如果可能的话,我想在 Mozilla web docs.
上找到一些相关信息此外,如果有人能向我解释给定示例中的代码流程,我将不胜感激!
谢谢!
只要你看到语法 async function*
,就意味着该函数是一个 AsyncGenerator。您可以通过在其生成的 AsyncIterator
AsyncGenerator
async function* streamGeoJSONL(url) {...} // AsyncGenerator
const url = "https://s3.amazonaws.com/vtiles/honolulu_hawaii.geojsonl"
streamGeoJSONL(url) // => AsyncIterator
当您调用 AsyncGenerator
时,您会得到一个 AsyncIterator
。这就是 AsyncGenerator
生成的:一个 AsyncIterator
您可以用 for await...of
AsyncIterator
for await (const newFeatures of streamGeoJSONL(url)) {/* do stuff with newFeatures */}
在您的示例中,newFeatures
取 streamGeoJSONL
yield
发回的值
async function* streamGeoJSONL(url) {
// ...
yield lines.map(JSON.parse) // this is newFeatures
} // AsyncGenerator