Tôi đang sử dụng mô-đun request-promise
để kiểm tra xem trang web có hoạt động với proxy hay không. Tôi đang cố gắng tìm các proxy đủ nhanh để trả lời trong 5 giây. Vì vậy, tôi chỉ thêm đối tượng nếu yêu cầu không hết thời gian chờ trong 5 giây.Hứa hẹn ngay cả khi nó được giải quyết
Đối với một số proxy, mặc dù lời hứa đã được giải quyết, tập lệnh nút bị treo trong một thời gian. Tôi không thể tìm ra lý do của sự chậm trễ này. Tôi thấy rằng nó in Done
nhưng nó bị treo. Sau 1 phút 10 giây sau, kịch bản thoát. Đây có phải là do mã của tôi, hoặc vấn đề hệ điều hành cho ổ cắm mở vv?
const rp = require('request-promise');
const testProxies = [
{
"ipAddress": "80.241.219.83",
"port": 3128,
},
{
"ipAddress": "45.55.27.246",
"port": 80
},
{
"ipAddress": "144.217.197.71",
"port": 8080,
},
{
"ipAddress": "104.131.168.255",
"port": 80,
},
];
function CheckSites(sitesArray,site) {
let ps = [];
for (let i = 0; i < sitesArray.length; i++) {
let proxy = sitesArray[i];
let ops = {
method: 'GET',
resolveWithFullResponse: true,
proxy: 'http://' + proxy.ipAddress + ':' + proxy.port,
uri:site,
};
let resp = rp.get(ops);
ps.push(resp);
}
return Promise.all(ps.map(function (p) {
p.time = Date.now();
return p
.then(function (a) {
return {'header':a.headers,'time':Date.now() - p.time};
})
.timeout(5000)
.catch(function (e) {
return {};
})
}))
}
CheckSites(testProxies,'https://www.example.com').then(function (object) {
console.log('Done!');
console.log(object);
}).catch(function (err) {
console.log('Exception: ' + err);
});
Tôi bị 'Xong! 'trên bảng điều khiển. Nó có nghĩa là tất cả các lời hứa được giải quyết. Cũng ngay cả với 'Promise.race()' nó vẫn treo trong một thời gian sau đó kịch bản thoát – Meanteacher
@Meanteacher Tôi cập nhật câu trả lời của tôi dường như yêu cầu lỗi mô-đun, vào thời gian chờ https://github.com/request/request/issues/1676 họ không đóng kết nối. –
Tôi đã kiểm tra liên kết của bạn liên kết đến một vấn đề khác. Tuy nhiên, người dùng đó nói rằng đó là lỗi trên mã của anh ta. Tôi vẫn không thể hiểu được lý do. Dù sao cũng cảm ơn bạn. – Meanteacher