前端尽快获得结果,即使所有结果还没有准备好

Frontend get the result as soons as possible even with all the result is not ready yet

提问人:albertoivo 提问时间:11/17/2023 更新时间:11/17/2023 访问量:27

问:

我在后端运行了很多 fetch(超过一百个)。前端必须等待后端运行所有这些获取,直到收到整个结果:

    let result = []
    for (const origin of originList) {
      for (const destiny of destinationList) {

          const url = // mount url

          const respPromise = fetch(url)
            .then((resp) => resp.json())
            .then((data) => {
              result.push(data.text)
            })

          fetchPromises.push(respPromise)
      }
    }

    await Promise.all(fetchPromises)

    return result

前端 (ReactJS) 只是执行 fetch 来调用后端。

上面的代码在很长一段时间后收到正确的结果,因为它必须等待数十次提取才能运行。这是我可以在准备好后立即返回每个结果的一种方式吗?

JavaScript 节点.js 异步等待

评论

0赞 Vivick 11/17/2023
您是否尝试过使用异步生成器?
0赞 albertoivo 11/17/2023
@Vivick号这是怎么回事?
0赞 Bergi 11/17/2023
你不能多次。那么,您实际上想对每个结果做什么呢?从你的代码顺序来看并不重要吗?return

答:

0赞 Sakar 11/17/2023 #1

与其获取所有结果,然后一次性发送它们,不如考虑使用流式处理方法,在结果可用后立即将其发送到前端。您可以使用后端等库来创建前端可以使用的可读流,但请确保也要调整前端。stream