为什么我的函数没有返回数组?
Why isn't my function returning my array?
function getContent(type) {
var content = [];
$.get(`/${type}.json`, function(data) {
$.each(data, function(index, hash) {
content.push(hash);
});
// 1. content = [object, object, etc..]
});
// 2. content = []
return content;
}
我需要帮助来理解这个。为什么content
在第二条评论上是空的?从它的外观来看,该函数开始将哈希推入名为content的NEW变量,而不是引用我在开始时显式创建的内容。我该如何解决这个问题?为什么javascript的作用域如此混乱?
同样,为了解决这个问题,我使用了全局变量。为什么我的函数可以访问函数中的任何地方的全局变量content
,但是在开始函数中调用content
,它将无法访问某些地方
因为$.get
是异步的。这个调用的本质是它进入事件循环,不修改当前的程序流。
你应该使用callback
function getContent(type, callback) {
var content = [];
$.get(`/${type}.json`, function(data) {
$.each(data, function(index, hash) {
content.push(hash);
});
callback( content );
});
}
getContent("items", function( content ) {
console.log(content);
});
为了给你一个更好的例子,你也可以使用你的流,但它应该是这样的:
function getContent(type, callback) {
var content = [];
$.get(`/${type}.json`, function(data) {
$.each(data, function(index, hash) {
content.push(hash);
});
callback();
});
return content;
}
var items = getContent("items", function() {
console.log( items );
});
相关文章:
- Regex提取URL返回数组的一部分;未定义”;
- 为循环嵌套的Javascript未按预期返回数组
- 从函数中的函数返回数组时出错
- JSON返回数组的奇怪结果
- 如何从NodeJS中的模块返回数组
- 在JS中返回数组的大整数运算
- 从Nodejs中的函数返回数组,并将其发送到ejs视图
- 从函数返回数组
- undercore返回数组中对象的indes,其中单词存在于对象中的句子中
- Yui Get 复选框返回数组而不是布尔值
- 从异步调用返回数组,然后为数组的每个元素返回其他异步调用
- JavaScript闭包和返回数组元素
- 按流星空格键模板中的索引返回数组项
- 从多个文件中推送文本的函数(使用html5文件读取器上传)返回数组
- 我想返回数组
- PHP和Ajax在回调和返回数组中使用foreach循环
- Javascript-如何通过以字符串作为参数返回数组
- 从JSON调用SQL返回数组时出现问题
- Jasmine spyOn使用伪造的返回数组测试功能
- 无法从从sql数据库读取的javascript函数中获取返回数组