javascript
  • getjson
  • 2016-01-19 17 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

    问题已解决。非常感谢你。 –

    相关问题