[英]Accessing a variable inside a callback
我在一個反應應用程序並使用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
}
如上所示,我一直未定義。 我基本上希望變量在全球范圍內可用。 我查看了有關本網站回調的其他建議,但沒有一個可以幫助我。
任何幫助,將不勝感激。
簡單的說
componentDidMount(){
var obj = {}
var res = file.getData(function(abc){
obj['abc'] = abc;
console.log('obj-abc ', obj.abc);
});
由於getData方法是異步的,因此不一定在javascript代碼中按順序執行。 這個變量已經是全局的,但如果你想確保你可以在它之后立即使用它,那么在繼續執行代碼之前先放置一些完成條件。
在這里要清楚JS。 看看代碼
setTimeout(met1, 0);
console.log("11");
setTimeout(met2, 0);
console.log("22");
出局將是這樣的
11
22
met1 output
met2 output
所以請記住,異步代碼將在未來執行,而不是在此刻執行。 將為您節省大量的調試時間。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.