我正在使用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
}
如上所示,我一直未定义。我基本上希望变量在全球范围内可用。我查看了有关本网站回调的其他建议,但没有一个可以帮助我。
任何帮助都将不胜感激。
答案 0 :(得分:1)
简单地说
componentDidMount(){
var obj = {}
var res = file.getData(function(abc){
obj['abc'] = abc;
console.log('obj-abc ', obj.abc);
});
由于getData方法是异步的,因此不一定会在javascript代码中按顺序执行。这个变量已经是全局的,但是如果你想确保你可以在它之后立即使用它,那么在继续执行代码之前先设置一些完成条件。
答案 1 :(得分:-1)
这里要清楚JS。 看代码
setTimeout(met1, 0);
console.log("11");
setTimeout(met2, 0);
console.log("22");
Out put将是这样的
11
22
met1 output
met2 output
所以请记住,异步代码将在未来执行,而不是在此刻执行。将为您节省大量的调试时间。希望这会有所帮助。