ich in einem reagieren app bin und einen Anruf tätigen axios mit:Zugriff auf eine Variable innerhalb einer Rückruf
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)
});
}
}
In einer anderen Datei, ich folgendes tue:
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
}
Wie oben gezeigt, Ich werde immer undefiniert. Ich möchte grundsätzlich, dass die Variable global verfügbar ist. Ich habe mir andere Vorschläge zu Rückrufen auf dieser Seite angesehen, aber keine von ihnen konnte mir helfen.
Jede Hilfe wäre willkommen.
GetData-Methode ist async und Javascript nicht. Ihre Datei.getData liefert später Ergebnisse, wenn die Konsole bereits gedruckt wird. Fügen Sie einfach console.log ('obj-abc', obj.abc); innerhalb von file.getData und Sie werden sehen, dass alles in Ordnung ist. –
Wenn Sie drucken ** console.log ('obj-abc', obj.abc); ** dann funktioniert es einwandfrei, aber in Ihrem Fall, während es den Wert von obj.abc den Wert zu nicht verfügbar, da getData () ist async Methode und ComponentDidMount() Methode nicht auf vollständige getData() Methode warten. –