如何在 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.
我有一个 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.