如何将JSON查询获取的数据声明为变量用于HIVE代币价值计算
解决方案
核心问题是异步请求的执行时序问题:JSON接口请求属于异步操作,若你在请求回调外定义HIVEusd变量,还没等接口返回结果就执行表格计算逻辑,此时HIVEusd还处于未赋值的初始状态,自然无法参与正常计算。可以选择以下两种方案修复:
方案1:将表格计算逻辑移入异步请求回调内
该方案兼容性最好,完全规避时序问题,参考代码示例:
// 可先定义全局变量存储汇率,必须等请求返回后再调用计算逻辑 let HIVEusd = 0; // 你的原有JSON汇率请求代码 fetch('你的汇率接口地址') .then(res => res.json()) .then(data => { // 接口返回后先完成汇率赋值 HIVEusd = data.rate; // 此处替换为你实际取汇率值的字段路径 // 调用表格计算逻辑 calculateTableUsdValue(); }) // 把你原有的表格计算逻辑封装成独立函数 function calculateTableUsdValue() { // 你原有遍历表格行、取第三列数值的代码 // ... // 第245行附近的计算逻辑 const valusd = res * HIVEusd; // 此时HIVEusd已完成赋值可正常使用 // ...你原有给表格赋值的后续逻辑 }
方案2:使用async/await语法简化异步时序控制
如果你的代码运行环境支持ES7+语法,可以用更简洁的写法避免回调嵌套:
// 封装汇率获取逻辑 async function getHiveUsdRate() { const res = await fetch('你的汇率接口地址'); const data = await res.json(); return data.rate; // 替换为你实际的汇率字段路径 } // 所有初始化逻辑用async函数包裹 async function initPage() { // 先等待汇率获取完成再执行后续逻辑 const HIVEusd = await getHiveUsdRate(); // 后续所有依赖HIVEusd的表格计算逻辑都写在这里 // ...遍历表格逻辑 const valusd = res * HIVEusd; // ...其他页面逻辑 } // 启动初始化 initPage();
额外避坑提示
如果你的表格计算是用户触发的操作(比如点击按钮、输入内容触发),可以增加一层合法性判断,避免出现NaN结果:
if (!HIVEusd || HIVEusd <= 0) { alert('汇率加载中,请稍后重试'); return; } const valusd = res * HIVEusd;
内容的提问来源于stack exchange,提问作者crrdlx
相关产品推荐
相关产品推荐

