Icareabout 2022-11-22 01:33 采纳率: 95.8%
浏览 7
已结题

怎么在for循环里面获取一个全局变量的值

怎么在for循环里面获取一个全局变量的值


var addrs;
var nr = "";
//info
var names;
//presale_info
var raise_min; 
var raise_max; 
PresaleFactory.methods.getPresales().call({from:account},function(error,addrs){//获取到的是一个数组,是一组地址。

    for(var i=0;i<addrs.length;i++){
        PresaleNewAddr = addrs[i];

        PresaleNew=new provider.eth.Contract(PresaleNewAbi,PresaleNewAddr);   //通过这个地址数组

        PresaleNew.methods.tokeninfo().call({from:account},function(error,token){ //通过这个地址数组,得到名字数组
            names = token.name;
        });


        PresaleNew.methods.presale_info().call({from:account},function(error,info){ //通过这个地址数组,得到最大值和最小值数组
            raise_min = info.raise_min; 
            raise_max = info.raise_max; 
        });

        //最终  需要在这里得到names,raise_min,raise_max  组成

        //目前这里无法得到 names ,  raise_max,  raise_max这个值
        nr +='<div><h1>'+names+'</h1><h2>'+raise_min+'</h2><h3>'+raise_max+'</h3></div>';
        $("#nr").html(nr);
    }
});
  • 写回答

8条回答 默认 最新

  • 游一游走一走 2022-11-22 09:03
    关注
    1. 你获取不到值的原因是你的请求是异步的,按下面的代码改写下就行
    2. 代码如下,我没有你的环境,盲写的,思路是这么个思路,有瑕疵,如有问题请及时反馈,我再完善
    PresaleFactory.methods.getPresales().call({from: account}, function (error, addrs) {//获取到的是一个数组,是一组地址。
        for (var i = 0; i < addrs.length; i++) {
            PresaleNewAddr = addrs[i];
            PresaleNew = new provider.eth.Contract(PresaleNewAbi, PresaleNewAddr);   //通过这个地址数组
            const namePromise = new Promise(resolve => {
                PresaleNew.methods.tokeninfo().call({from: account}, function (error, token) { //通过这个地址数组,得到名字数组
                    resolve({name: token.name});
                });
            });
    
            const minMaxPromise = new Promise(resolve => {
                PresaleNew.methods.presale_info().call({from: account}, function (error, info) { //通过这个地址数组,得到最大值和最小值数组
                    resolve({raise_min: info.raise_min, raise_max: info.raise_max})
                })
            });
            Promise.all([namePromise, minMaxPromise]).then(result => {
                let data = result.reduce((t, i) => ({...t, ...i}), {});
                $("#nr").append('<div><h1>' + data.name + '</h1><h2>' + data.raise_min + '</h2><h3>' + data.raise_max + '</h3></div>')
            })
        }
    });
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 11月30日
  • 已采纳回答 11月22日
  • 赞助了问题酬金15元 11月22日
  • 赞助了问题酬金15元 11月22日
  • 展开全部

悬赏问题

  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
  • ¥15 八路抢答器设计出现故障
  • ¥15 请教一下c语言的代码里有一个地方不懂
  • ¥15 opencv 无法读取视频
  • ¥15 用matlab 实现通信仿真
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档