gpt4 book ai didi

javascript - 充满对象的数组没有长度

转载 作者:太空宇宙 更新时间:2023-11-04 15:30:34 24 4
gpt4 key购买 nike

因此,我进行了几次 ajax 调用,最终希望构建一个包含我需要的相关值的对象数组。不幸的是我遇到了一些奇怪的事情。我的第一个 ajax 调用返回一个充满我正在寻找的对象的数组,但是当我在数组上调用 length 时,我得到零。这是相关代码(代码中的“followings”是用户拥有的关注数组):

function followingsJSON(followings) {
var followingObject = [];

for (var i in followings) {
var query = "https://wind-bow.glitch.me/twitch-api/users/" +
followings[i];

$.ajax({

url: query,
type: "GET",
datatype: "json"

}) .done(function(json){
if (json.display_name) {
followingObject.push({
'display_name' : json.display_name,
'logo' : json.logo,
'_id' : json._id
});
} else {
followingObject.push({
'display_name' : null
});
}
})
};
console.log(followingObject);
console.log(followingObject.length);
}

使用 chrom 开发工具,我可以从控制台日志中看到以下对象是:

[]
0: Object
1: Object
2: Object
3: Object
4: Object
5: Object
6: Object
7: Object
8: Object
length: 9
__proto__: Array(0)

因此该数组具有我想要的对象,并且该数组从 Array 派生其原型(prototype)方法,因此 length 应该对其起作用。但 console.log(followingObject) 给了我 0。

有人知道为什么吗?

最佳答案

我将 console.log 移至完成函数

function followingsJSON(followings) {
var followingObject = [];

for (var i in followings) {
var query = "https://wind-bow.glitch.me/twitch-api/users/" +
followings[i];

$.ajax({

url: query,
type: "GET",
datatype: "json"

}) .done(function(json){
if (json.display_name) {
followingObject.push({
'display_name' : json.display_name,
'logo' : json.logo,
'_id' : json._id
});
} else {
followingObject.push({
'display_name' : null
});
}
console.log(followingObject);
console.log(followingObject.length);
})
};
}

console.log 是同步的,而 ajax 调用是异步执行的,这意味着 ajax 调用之后的命令会在 ajax 调用完成之前执行 -> console.log 中还没有结果

关于javascript - 充满对象的数组没有长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44823223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com