如何在 expressJS 中同时处理两个长请求

How to handle two long request simultanously in expressJS

我有一个 API 有一条快速路线 花一些时间来获取所有需要的数据(搜索长 JSON 对象)

router.get(
  "/:server/:maxCraftPrice/:minBenef/:from/:to",
  checkJwt,
  async (req, res) => {
    const getAllAstuces = new Promise(async (resolve, reject) => {
      const { EQUIPMENTS_DIR, RESOURCES_DIR } = paths[req.params.server];
      const astuces = [];
      const { from, to, maxCraftPrice, minBenef } = req.params;
      const filteredEquipments = getItemByLevel(from, to);
      for (const equipment in filteredEquipments) {
        // parsing and push to astuces array
      }
      resolve(astuces);
    });

    const resource = await getAllAstuces;
    return res.json(resource);
  }
);

现在在我的网站上,当有人访问与此路由关联的页面时,在加载数据时,每个其他请求都像在队列中一样被锁定

我试图添加 Promise 来处理这个但没有改变

有没有办法同时处理请求,或者我是否应该重构该路由以使其更快?

如果您的请求需要很长时间才能处理,它将阻止所有其他请求,直到完成为止。如果您可以使请求花费更少的处理时间,这是一个很好的起点,但您可能需要采取进一步的措施来更快地处理多个请求。

有多种方法可以解决这种情况。这个article describes a few approaches.