异步迭代器和生成器:流GeoJSONL

问题描述 投票:0回答:1

我正在尝试复制有关流式GeoJSONL文件的Brett Camper's code,这很复杂。

我试图逐步了解它的作用,但我真的不知道此语法的作用:

streamGeoJSONL = async ƒ*(url)

任何人都可以向我解释吗?如果可能的话,我想在Mozilla web docs上找到有关的内容。

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

谢谢!

javascript async-await async-iterator
1个回答
0
投票

只要看到语法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
© www.soinside.com 2019 - 2024. All rights reserved.