Oll*_*619 5 javascript node.js ecmascript-2016
我正在尝试获取一个网址来获取标头并确保它返回内容类型,以便我可以检查以确保它包含“图像”
到目前为止,我只是循环访问数据库以获取图像 url,并将其传递到 fetch 中以获取内容类型。
到目前为止,然后出现套接字挂起错误。
这是我正在调用的函数
const getImage = async (url) => {
try {
const res = await fetch(encodeURI(url));
console.log(res.headers.get("content-type"));
} catch (err) {
console.log(err);
}
};
Run Code Online (Sandbox Code Playgroud)
然而,过了这么长时间,它开始出错,并且 node-fetch 产生以下错误:
FetchError: request to http://www.fakeurl/image.jpg failed, reason: socket hang up
at ClientRequest.<anonymous> (/home/user/code/url-check/node_modules/node-fetch/lib/index.js:1455:11)
at ClientRequest.emit (events.js:321:20)
at Socket.socketOnEnd (_http_client.js:463:9)
at Socket.emit (events.js:333:22)
at endReadableNT (_stream_readable.js:1201:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
Run Code Online (Sandbox Code Playgroud)
我不确定我做错了什么,我猜测服务器一次收到太多请求,但不知道如何减慢速度或将其排队以重试
编辑
这是调用上面函数的数据库循环:
connection.query(sql, (error, results, fields) => {
if (error) {
return console.error(error.message);
}
for (let i = 0; i < results.length; i++) {
getImage(results[i].image_url);
}
});
connection.end();
Run Code Online (Sandbox Code Playgroud)
小智 2
发生这种情况可能有以下几个原因:
我认为你应该做什么: