1

我正在尝试复制Brett Camper关于流式传输 GeoJSONL 文件的代码,它非常复杂。

我正在尝试逐步了解它的作用,但我真的无法弄清楚这种语法的作用:

streamGeoJSONL = async ƒ*(url)

任何人都可以向我解释一下吗?如果可能的话,我想在Mozilla web docs上找到一些关于它的信息。

另外,如果有人可以向我解释给定示例中的代码流程,我将非常感激!

谢谢!

4

1 回答 1

1

每当您看到语法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

您可以使用AsyncIteratorwithfor await...of

for await (const newFeatures of streamGeoJSONL(url)) {/* do stuff with newFeatures */}

在您的示例中,newFeatures采用关键字发回的yieldstreamGeoJSONL

async function* streamGeoJSONL(url) {
  // ...
  yield lines.map(JSON.parse) // this is newFeatures
} // AsyncGenerator
于 2020-05-27T01:04:35.113 回答