【问题标题】:Async iterators and generators: Streaming GeoJSONL异步迭代器和生成器:流式 GeoJSONL
【发布时间】:2020-09-13 20:36:48
【问题描述】:

我正在尝试复制 Brett Camper's code 关于流式 GeoJSONL 文件的内容,这非常复杂。

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

streamGeoJSONL = async ƒ*(url)

谁能给我解释一下?如果可能的话,我想在Mozilla web docs 上找到有关它的信息。

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

谢谢!

【问题讨论】:

    标签: javascript async-await async-iterator


    【解决方案1】:

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

    您可以使用AsyncIteratorfor await...of

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      • 2021-10-29
      • 1970-01-01
      • 2018-05-16
      相关资源
      最近更新 更多