1

我在一个反应​​应用程序中并使用 axios 拨打电话:

   import axios from 'axios';

    export default {
      getData : function(callback){

        var instance = axios.create({
          baseURL: '//abc/json',
          withCredentials: false
        });

        instance.get('')
            .then((response) => {              
                  callback(response.data.abc);                
              }, (error) => {
                  callback(error)
              });
         }
    }

在另一个文件中,我正在执行以下操作:

import file from './file';


//class definition...

    componentDidMount(){

        var obj = {}
        var res = file.getData(function(abc){
            obj['abc'] = abc;
        });

        console.log('obj-abc ', obj.abc); //returns undefined
      }

如上所示,我一直不确定。我基本上希望该变量在全球范围内可用。我查看了有关此站点上的回调的其他建议,但没有一个可以帮助我。

任何帮助,将不胜感激。

4

2 回答 2

1

简单的说

componentDidMount(){

var obj = {}
var res = file.getData(function(abc){
    obj['abc'] = abc;
    console.log('obj-abc ', obj.abc);
});

由于getData方法是异步的,所以在javascript代码中不一定会顺序执行。这个变量已经是全局的,但是如果你想确保你可以在它之后使用它,在继续代码执行之前放置某种完成条件。

于 2016-08-09T12:36:23.187 回答
-1

只是为了清楚这里的JS。看代码

setTimeout(met1, 0);
console.log("11");    
setTimeout(met2, 0);
console.log("22");

输出会是这样

11
22
met1 output
met2 output

所以请始终记住,异步代码将在未来而不是此时执行。将为您节省大量调试时间。希望这可以帮助。

于 2016-08-09T12:38:03.020 回答