使用回调函数更改 getJSON 外部定义的变量的值
Using callback function to change the value of a variable defined outsite of 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'));
问题是我在控制台日志中收到的是"默认",而不是"离线",也不是"在线",也不是我预期的"未找到"。
我试图在 check() 函数之前移动 console.log() 行,但它不起作用。我还尝试全局定义 var 结果,但它也不起作用。
任何帮助将不胜感激!
这是
你的代码应该如何编写:
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 调用自己的回调时调用该函数。
相关文章:
- 如何在定义js文件后为外部javascript文件设置变量
- 像createComment这样的各种自定义变量名在内联javascript中被覆盖,但在外部js中没有.为什么?
- 定义函数时,如何捕获外部变量的当前值
- Rally SDK外部开发Rally环境未定义
- 函数从$(document).ready外部调用在$(document).ready中定义的函数
- JavaScript未定义的函数外部JavaScript文件
- 取消重置由外部样式表定义的样式
- JavaScript-如何将onload函数内部定义的变量取到外部
- 为什么嵌套的 describe() 块不能看到在外部块中定义的变量
- 调用插件外部的自定义函数并传递参数
- 得到"未定义“;从外部javascript加载函数
- 无法读取属性'来自JS'外部viewmodel.js中未定义的
- 加载外部脚本时,匿名定义()模块不匹配
- 使用外部单击关闭自定义指令弹出框
- 在预先存在的命名空间中定义所有外部 JavaScript
- 如何在 AngularJS 中将自定义指令与外部 HTML 模板捆绑在一起
- 从外部文件在打字稿中声明变量得到引用错误:..未定义
- 使用调试器从内部函数调用外部函数中定义的变量
- 为什么不在对象外部使用属性定义语法是语法错误
- 定义外部JS文件的执行上下文