gpt4 book ai didi

javascript - 如何从 setTimeout 回调发送 http 响应 - express

转载 作者:搜寻专家 更新时间:2023-10-31 23:14:46 24 4
gpt4 key购买 nike

我希望客户响应超时,因此如果处理时间超过特定间隔,我将尝试从 setTimeout 回调发送响应。

在下面的示例中,我将 20ms 设置为必须处理 services.getReport() 的超时期限,否则 API 必须将响应发送为 response_timed_out

下面的代码工作正常但是它会抛出异常

Cannot set headers after they are sent to the client

router.post("/getReport", (req, res) => {
setTimeout(() => {
res.send({ status:503, msg: "response_timed_out" });
}, 20);
services.getReport(req, res);
});

最佳答案

您可以使用 setTimeout请求对象上的方法来定义每个路由的超时时间。

router.post("/getReport", (req, res) => {
req.setTimeout(2000);
services.getReport(req, res);
});

您还可以为服务器上的所有路由全局定义超时时间。

const server = app.listen(port, () => {});
server.setTimeout(15000);

您还可以提供第二个参数,即超时发生时将运行的回调。如果您想要回调,那么您可以在响应上调用 setTimeout

router.post("/getReport", (req, res) => {
res.setTimeout(2000, () => res.send('timed_out'));
services.getReport(req, res);
});

关于javascript - 如何从 setTimeout 回调发送 http 响应 - express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56736784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com