echarts 实时获取数据
html:
<div id="realTimeInvoke" class="chart" style="height: 400px;"></div>
js:
// 初始化 echarts
var realTimeInvokeChart = echarts.init(document.getElementById('realTimeInvoke'),'light');
var timeerOfRealtime; // 实时调用量 定时器
var realTimeInvokeOption = {
tooltip: {
trigger: 'axis'
},
toolbox: {
feature: {
magicType: {
type: ['bar', 'line']
},
saveAsImage: {},
},
},
xAxis: {
type: 'category',
boundaryGap : false,
data: []
},
yAxis: {
type: 'value',
scale: false
},
series: [
{
name: '调用量',
type: 'line',
smooth:true,
areaStyle: { },
data: [],
},
],
grid: {
left: '5%',
right: '5%',
}
};
realTimeInvokeChart.setOption(realTimeInvokeOption);
setIntervalOfRealTime('001');
function setIntervalOfRealTime (id) {
var postData = [];
var xAxisDate = [];
var data = [];
realTimeInvokeChart.showLoading();
clearInterval(timeerOfRealtime);
timeerOfRealtime = setInterval(() => {
postData = formatDateToArray()[1];
xAxisDate = formatDateToArray()[0];
data = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
$.ajax({
url: url`,
type: 'GET',
success: function (res) {
realTimeInvokeChart.hideLoading();
res.map((val, index) => {
if(postData.includes(val.time)) {
data[postData.indexOf(val.time)] = val.succ;
}
})
realTimeInvokeChart.setOption({
xAxis: {
data: xAxisDate
},
series: [{
data: data
}],
});
},
error: function (response) {
alert('服务器异常!');
console.log(response);
return false;
}
});
}, 1000);
}
// 格式化实时时间
function formatDateToArray () {
var nowDate = +new Date() - 10000;
var xAxisDate = [],
postDate = [];
for (var i = 0; i < 40; i++) {
var year = new Date(nowDate).getFullYear();
var month = new Date(nowDate).getMonth() + 1 < 10 ? '0' + (new Date(nowDate).getMonth() + 1) : new Date(nowDate).getMonth() + 1;
var day = new Date(nowDate).getDate() < 10 ? '0' + new Date(nowDate).getDate() : new Date(nowDate).getDate();
var hour = new Date(nowDate).getHours() < 10 ? '0' + new Date(nowDate).getHours() : new Date(nowDate).getHours();
var minute = new Date(nowDate).getMinutes() < 10 ? '0' + new Date(nowDate).getMinutes() : new Date(nowDate).getMinutes();
var second = new Date(nowDate).getSeconds() < 10 ? '0' + new Date(nowDate).getSeconds() : new Date(nowDate).getSeconds();
xAxisDate.unshift(hour + ':' + minute + ':' + second);
postDate.unshift(year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second);
nowDate = nowDate - 1000;
}
return [xAxisDate, postDate];
}
标签:
JavaScript
, ES6
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构