[英]Make http request over array every minute
我必須檢索1000多個ip地址。 由於我必須使用ip-api.com / batch,因此此api的post方法要求每分鍾最大100 Json參數長度。 我輸入了超過1000個IP地址的數組,並創建了一個新數組,每個索引的另一個數組的最大長度為100。現在我正在努力使數組的每個索引的http調用都處於等待狀態,並等待一分鍾等待下一個新請求指數。
//for example I have two index in groups and each index has other 3
indexes
let groups= [[ { query: '193.206.170.145', fields: 'lat,lon' },
{ query: '37.186.207.50', fields: 'lat,lon' },
{ query: '193.206.170.144', fields: 'lat,lon' },
{ query: '62.18.244.163', fields: 'lat,lon' }],
[ { query: '79.52.35.144', fields: 'lat,lon' },
{ query: '62.18.249.56', fields: 'lat,lon' },
{ query: '176.200.132.147', fields: 'lat,lon' }]]
groups.forEach( el => makeRequest(el));
function makeRequest (array){
let toJson = JSON.stringify(array)
setInterval(function(){
axios.post('http://ip-api.com/batch',toJson)
.then(function (response) {
console.log(response.data);
})
.catch(function (error) {
console.log(error);
});
},60000);
}
Expected:
[{ lat: 45.8, lon: 8.8333 },
{ lat: 45.8155, lon: 8.82753 },
{ lat: 45.8, lon: 8.8333 }]
after one minute
[{ lat: 41.818, lon: 12.4148 },
{ lat: 45.4643, lon: 9.1895 },
{ lat: 45.5324, lon: 9.0402 }]
const axios = require('axios');
let groups = [[{ query: '193.206.170.145', fields: 'lat,lon' },
{ query: '37.186.207.50', fields: 'lat,lon' },
{ query: '193.206.170.144', fields: 'lat,lon' },
{ query: '62.18.244.163', fields: 'lat,lon' }],
[{ query: '79.52.35.144', fields: 'lat,lon' },
{ query: '62.18.249.56', fields: 'lat,lon' },
{ query: '176.200.132.147', fields: 'lat,lon' }]]
groups.forEach(el => makeRequest(el));
function makeRequest(array) {
for (var i = 0; i < array.length; i++) {
(function (i) {
let toJson = JSON.stringify(array)
setTimeout(function () {
axios.post('http://ip-api.com/batch', toJson)
.then(function (response) {
console.log(response.data);
})
.catch(function (error) {
console.log(error);
})
}, 60000 * i);
})(i);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.