我正在进行嵌套的API调用,并将结果的片断放入一个对象数组中。当我把它打印到控制台时,它看起来很好。但是当我尝试调用这些块上的函数时,它们会中断。内置函数的对象数组有类型问题
这里的除了私人API URL代码:
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 [0] .Date);'在对象建立之前运行。 –