javascript
  • getjson
  • 2016-01-19 29 views 0 likes 
    0

    好的,所以我有這個功能。使用回調函數來更改定義爲getJSON外部變量的值

    function check(username){ 
        var result = "default"; 
        $.getJSON('https://api.twitch.tv/kraken/streams/' + username, function(data){ 
         if(data.stream == null) 
         result = 'offline'; 
         else 
         result = 'online'; 
    
        }).fail(function(){ 
         result = 'notfound'; 
         }); 
    
        return result; 
    } 
    
    console.log(check('freecodecamp')); 
    

    的問題是,我在控制檯接收到的記錄是「默認」,而不是「脫機」,也不是「在線,也不是‘NOTFOUND’如我所料。

    我試圖移動控制檯。日誌()線檢查()函數之前,但它不工作。我也試圖在全球範圍界定VAR的結果,但它並不能工作。

    任何幫助,將不勝感激!

    回答

    2

    這是如何編寫代碼:

    function check(username, callback){ 
        var result = "default"; 
        $.getJSON('https://api.twitch.tv/kraken/streams/' + username, function(data){ 
         if(data.stream == null) { 
         result = 'offline'; 
         } else { 
         result = 'online'; 
         } 
    
         callback(result); 
        }).fail(function(){ 
         result = 'notfound'; 
         callback(result); 
        }); 
    } 
    
    check('freecodecamp', function (result) { 
        console.log(result); 
    }); 
    

    這是因爲$ .getJSON是一個異步函數,所以它立即返回,同時通過回調函數提供其輸出值。因此,要獲得「返回」值,您需要做同樣的事情,即爲您自己的函數提供回調,當$ .getJSON調用自己的回調時調用該函數。

    +1

    問題已解決。非常感謝你。 –

    相關問題