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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。