我有一个通过数组运行的 API,我想在每个数组元素上将数据发送到客户端

问题描述

我有一个通过数组运行的 API,我想在每个数组元素上将数据发送到客户端,我尝试将 res.write 与 res.flush 一起使用,但它仍然等到最后发送所有内容,是否存在一种可以分块发送数据的方式吗?

for (let i = 0; i < searchUrl.length; i++) {
      const element = searchUrl[i];
      const element_details = await getDetailsforURL(element)
      res.write(JSON.stringify(element_details))
      res.flush()
      //return_array.push(element_details)
    }
    res.end()

解决方法

.write() 向响应正文添加内容。基本上每个 res.write() 都会向正文添加数据并使用 res.end() 发送。如果要分块发送,则每个块需要一个请求,这意味着客户端需要不断发送请求,直到接收到所有数据。

如果不想发送整个数组,可以在服务器端进行处理,并将结果发送给客户端:

let response = [];
for (let i = 0; i < searchUrl.length; i++)
    const element = searchUrl[i];
    const element_details = await getDetailsforURL(element);
    response.push(element_details);
    
}
res.write(JSON.stringify(element_details));
res.end();