求助:数组在大括号内进行操作无效

#1

代码如下:

query(){
     var q=[];
     currencies.forEach(function(value,index){
       console.log('http://api.k780.com:88/?app=finance.rate&scur='+value.code+'&tcur=CNY&appkey=22977&sign=03ba085f4397c5700bc61eb989c17198&format=json&jsoncallback=data')
        $(document).ready(function(){
     $.ajax({
        type          : 'get',
        async         : false,
        url           : 'http://api.k780.com:88/?app=finance.rate&scur='+value.code+'&tcur=CNY&appkey=22977&sign=03ba085f4397c5700bc61eb989c17198&format=json&jsoncallback=data',
        dataType      : 'jsonp',
        jsonp         : 'callback',
        jsonpCallback : 'data',
        success       : function(data){
          console.log(data)
            if(data.success!='1'){
                alert(data.msgid+' '+data.msg);
                
            }
            console.log(data.result.rate);
           
            console.log(q.push(data.result.rate));
        },
        error:function(){
            alert('fail');
        }
    });
});

     },this);
      console.log('q'+q[0]+q[1]+q[2]);
    //  console.log(this.state)
    //  this.setState({rates:q});
   }

运行截图如下:

奇怪的是我明明在 console.log(q.push(data.result.rate));这条语句中向q数组中添加了数据,然而实际上仍然都是undefined。另外语句的运行顺序也有问题(可参照截图)console.log(‘q’+q[0]+q[1]+q[2]);这条语句本应是最后一条打印,然而实际上在中间就打印出来

请问各位大佬怎么解决?我是个新手,折腾这个一天了