【发布时间】:2022-01-11 14:26:59
【问题描述】:
我有一个 API 与 express one route 花一些时间来获取所需的所有数据(通过长 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 来处理这个问题,但没有改变
有没有办法同时处理请求,或者我应该重构该路由以使其更快?
【问题讨论】:
-
你需要检查你点击 API 的前端代码,你可能是先调用慢 API,然后等待它完成,然后调用下一个 API 等,如果它们不依赖在第一个 API 调用结果上,然后不要对 API 使用 await,而是在慢速 API Promise 上使用
.then(callbackFunction)并照常调用其余 API。
标签: node.js express asynchronous queue