Javascript 函数内部构建的对象数组存在类型问题
我正在进行嵌套API调用,并将结果的各个部分放入一个对象数组中。当我把它打印到控制台上时,它看起来很好。但是当我尝试调用片段上的函数时,它们会中断 以下是除专用API URL之外的代码:Javascript 函数内部构建的对象数组存在类型问题,javascript,jquery,json,Javascript,Jquery,Json,我正在进行嵌套API调用,并将结果的各个部分放入一个对象数组中。当我把它打印到控制台上时,它看起来很好。但是当我尝试调用片段上的函数时,它们会中断 以下是除专用API URL之外的代码: var gate = new Array(); jQuery.getJSON(endPoint + "method=GetUsersWithTicketsEventId", function(tickets) { jQuery.each(tickets.message, function(i, ticke
var gate = new Array();
jQuery.getJSON(endPoint + "method=GetUsersWithTicketsEventId", function(tickets) {
jQuery.each(tickets.message, function(i, ticket) {
gate[i] = new Object();
jQuery.getJSON(endPoint + "method=GrabUsersCustomEventInfo&userId=" + ticket.UserId, function(answers) {
jQuery.each(answers.message, function(j, answer) {
if (answer.meta_key == "42_Volunteering") {
if (answer.meta_value != "Array") {
gate[i].Roles = answer.meta_value.split(';');
} else {
gate[i].Roles = new Array();
}
} else if (answer.meta_key == "42_1_TOSDate") {
gate[i].Date = new Date(answer.meta_value);
}
console.dir(gate[0].Date); // This works
});
});
});
console.dir(gate); // This works
console.dir(gate[0].Date); // This returns undefined
});
第二个console.dir的结果似乎格式良好:
> Array(237)
> [0 … 99]
> 0: Object
> Date: Mon May 08 2017 21:09:09 GMT-0700 (Pacific Daylight Time)
> __proto__: Object
> constructor: function Date()
...
我假设这与变量作用域有关,但当控制台输出与解释器看到的明显不同时,我不明白如何调试它。在代码末尾:
console.dir(gate); // This works:
因为您之前已经定义了对象,并且您正在告诉控制台打印出对象,该对象将随着更多数据的进入而更新
console.dir(gate[0].Date); // This returns undefined
这将返回undefined,因为在执行的这一点上,数组实际上是空的。您的内部提取尚未填充对象,因此它是一个未定义的引用 这是一个异步问题。console.dirgate[0]。日期;在构建对象之前运行。哦,因为getJSON是异步的!!那么,我如何设计这种东西来适应这种情况呢?考虑使用承诺来等待一切完成。