好的,所以我有这个功能。
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'));
问题在于我在控制台日志中收到的是"默认",不是"离线",也没有"在线,也没有"未发现"正如我所料。
我试图在check()函数之前移动console.log()行,但它不起作用。我还尝试在全局范围内定义var结果,但它也不起作用。
任何帮助将不胜感激!
答案 0 :(得分: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调用自己的回调时调用的函数提供回调。