簡體   English   中英

訪問回調內的變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM