该项目是学校的家庭作业,我们在其中提出API请求以获取一些加密货币虚拟数据并在图表上显示结果。 图表绘制是使用Chart.js完成的,它对我重新发送的任何数据都可以正常工作。问题在于获取数据。
我有以下简单的代码定期执行请求:
setInterval(function fetchData() {
console.log("BTC fetched");
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "https://obudai-api.azurewebsites.net/api/exchange /btc", true);
xhttp.setRequestHeader("X-Access-Token", secretKey);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.onreadystatechange = function () {
if (xhttp.readyState === 4 && xhttp.status === 200) {
var res = JSON.parse(xhttp.responseText);
bitcoin = res["currentRate"];
}
};
xhttp.send();
}, 15000);
我调用了3个此函数,每个函数用于不同的加密货币。
我查找了Chrome诊断程序,结果是
注意:节流限制为10次/ 15秒。使用我的设置,我进行3次调用/ 15秒,或者,当处于调试模式时,6次调用/ 15秒。它肯定应该可以正常工作,但我不确定为什么会这样做。
更新:在评论的帮助之后,我终于可以显示响应消息了。它看起来像这样:
我提取当前日期。
现在使用超时和递归更新代码:
let timerId = setTimeout(function tick() {
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "https://obudai-api.azurewebsites.net/api/exchange/btc", true);
xhttp.setRequestHeader("X-Access-Token", secretKey);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.onreadystatechange = function () {
if (xhttp.readyState === 4 && xhttp.status === 200) {
var res = JSON.parse(xhttp.responseText);
bitcoin = res["currentRate"];
console.log(xhttp.responseText);
}
};
xhttp.send();
timerId = setTimeout(tick, 5000); // (*)
}, 5000);