【发布时间】:2020-08-31 00:42:50
【问题描述】:
agsi web 给单个毒气室运营商提供api,在一些国家运营商很少。我必须得到所有运营商的总和。例如在德国有 25 个 SSO(存储系统运营商)。我为他们每个人都有一个 api。
我设法得到了我想要的数组,但德国需要 20 秒(最大)
在图表中获取和使用这些数据的最佳方式是什么,我在本地存储数据。 (也许每天使用 D3 保存为 CSV 一次,或者使用 python 将数据作为 js 文件中的变量输入? 我将它用于学习目的,现在我还不够熟练地使用服务器端。
let apiKey = "709a7d013e4fda8f3e21166c33a1a691";
let urls = [
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/21X000000001160J/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/37X0000000000151/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/37X0000000000224/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/21X000000001125L/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/21X0000000010849/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/21X000000001368W/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/21X0000000011756/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/21X000000001090E/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/21X0000000013805/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/21X000000001262B/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/21X000000001140P/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/37X000000000042Z/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/21X0000000011748/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/11XNERGIE------1/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/37X0000000000119/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/25X-OMVGASSTORA5/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/11XSWHANNOVERAG3/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/21X000000001072G/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/11XSWB-BREMEN--I/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/37X000000000051Y/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/21X000000001307F/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/21X000000001310Q/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/21X000000001127H/DE',
'https://cors-anywhere.herokuapp.com/https://agsi.gie.eu/api/data/21X000000001138C/DE',
];
let requests = urls.map((url) =>
fetch(url, {
method: "GET",
headers: {
"x-key": apiKey
}
}).then((res) => res.json())
);
Promise.all(requests).then((response) => arr_api_agsi(response));
function arr_api_agsi(response) {
var arr_api=[];
var l=[];
var i;
var j;
var jj;
var gas_date;
var response_length=response.length
for (i = 0; i < response_length; i++) {
arr_api.push(response[i]);
l.push(response[i].length);
}
var gas_vol=0;
var arr_max_index=0;
l.map((u)=>u.length>l[arr_max_index].length ? arr_max_index=l.indexOf(u.length):x=1);
var gas_storage=[];
var gas_storage_temp=[];
var len_single_arr;
var len_max_arr=arr_api[arr_max_index].length
for(i=0;i<len_max_arr;i++){ //for all dates in max length array
len_max_arr_j=arr_api.length
for(j=0;j<len_max_arr_j;j++){ //for all arrays
len_single_arr=arr_api[j].length
for(jj=0;jj< len_single_arr;jj++){ //for all dates in single array
if (arr_api[arr_max_index][i]["gasDayStartedOn"]==arr_api[j][jj]["gasDayStartedOn"] && isNaN(parseFloat(arr_api[j][jj]["gasInStorage"]))==false) {
gas_vol+=parseFloat(arr_api[j][jj]["gasInStorage"]);
gas_date=arr_api[j][jj]["gasDayStartedOn"];
}
}
}
gas_storage_temp.push([gas_date,gas_vol]);
gas_storage=gas_storage.concat(gas_storage_temp);
gas_storage_temp=[];
gas_vol=0;
}
console.log(gas_storage)
}
【问题讨论】:
标签: javascript api promise