1 回答
TA贡献1946条经验 获得超3个赞
我写这篇文章作为答案只是为了我可以提出一些代码,您可以运行这些代码来测试各种理论,因为我们还不知道实际问题是什么。
ETIMEDOUT 并没有真正告诉我们您收到错误的原因。
如果这是一个主要站点,则服务器不太可能只是性能不佳并且实际上超时了。它可能会因为您一次向它发送 5 个快速请求而感到不满,但它确实应该给您带来不同类型的错误。
也有可能,您和此 api 服务器之间的网络连接存在某种问题。
要排除快速请求问题,您可以串行发送请求,在请求之间有短暂的延迟,看看这是否会改变问题。
app.post("/movie/:movieName/", async function(req, res) {
try {
const Title = req.params.movieName;
function fetchCommon(suffix) {
return fetch("https://api.themoviedb.org/3/movie/" + suffix).then(r => r.json());
}
function delay(t) {
return new Promise(resolve => {
setTimeout(resolve, t);
});
}
const input = [
Title + "/videos?=en-us",
Title + "?&language=en-US",
Title + "?&language=en-US",
"now_playing?&language=en-US&page=2",
Title + "/similar?&language=en-US"
];
const results = [];
const waitTime = 250;
for (arg of input) {
let result = await fetchCommon(arg);
results.push(result);
await delay(waitTime);
}
const Details = response[1];
const Video = response[0].results[0];
const Cast = response[2].cast;
const Similar = response[3].results;
const Playing = response[4].results;
res.render(
"movie", {
Details,
Video,
Cast,
Similar,
Playing
}
);
} catch (e) {
// always send a response, even if there's an error
console.log(e);
res.sendStatus(500);
}
});
注意:这是调试问题的第一步。希望您能从运行此代码中学到一些东西,然后可以归零到问题的实际根本原因。
添加回答
举报