【发布时间】:2016-12-15 12:07:26
【问题描述】:
我在一个 react 应用程序中并使用 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
}
如上所示,我一直不确定。我基本上希望该变量在全球范围内可用。我查看了有关此站点上的回调的其他建议,但没有一个可以帮助我。
任何帮助将不胜感激。
【问题讨论】:
-
GetData 方法是异步的,而 javascript 不是。您的 file.getData 将在稍后打印控制台时返回结果。只需添加 console.log('obj-abc ', obj.abc);在 file.getData 中,您会看到一切正常。
-
如果您正在打印 console.log('obj-abc ', obj.abc); 那么它完全可以正常工作,但在您的情况下,它打印 obj 的值.abc 值不可用,因为 getData() 是异步方法,而 componentDidMount() 方法不等待完整的 getData() 方法。
标签: javascript reactjs axios