首页 > 解决方案 > 尝试不断向浏览器发送异步数据:发送到客户端后无法设置标头?

问题描述

我有queryIterator一个返回异步对象值的函数result,我使用回调函数result通过res.send().

错误:(节点:3497)UnhandledPromiseRejectionWarning:错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头

我认为我得到了错误,因为当标题已经设置时,我一直在向浏览器重新发送响应,对吗?

如何从快速服务器连续将数据流式传输到客户端浏览器?

  router.post('/', async (req, res) => {
    // Assign first query
    searchedT = req.body.searchTerm;
    queries.push(req.body.searchTerm);
    // Invoke the async iterator
    console.log("start....");
    const results = await queryIterator(queries, async function(result) {
      console.log("--->" + await result);
      res.send(await result);

    });
    // res.send(result);
});


async function queryIterator(queries, callback) {
  for await (const result of queryGenerator()) {
      // console.log('Iterating... ', result);
      // console.log(`On Queue Searches #${++counter}: `, queries);
      // console.log(`On Queue Searches LAST #${++counter}: `, queries[queries.length-1]);
       if (!queries.length) {
          console.log("query length is zero");
          return result;
      }
      callback(result);
      // return result;
  }
}

标签: javascriptnode.jsasynchronouscallbackasync-await

解决方案


推荐阅读