当我在某些REST服务上设置匿名回调函数时,我得到了一个非常奇怪的行为,如果我只是console.log
REST服务的结果,我得到预期的有效负载(一组对象)。但是,当我在同一个数组上运行循环并尝试获取某个键的值时,我收到错误,因为该项目显然是undefined
...
callback: (result) => {
console.log(result); // outputs [{text: 'foo'}, {text: 'bar'}]
for(let item of result){
console.log(item.text); // error can't read text of undefined
console.log(item); // HOWEVER... this works... :/
}
}
有什么想法吗?必定会出现某种异步行为,但我无法弄清楚。
谢谢!
答案 0 :(得分:2)
你很可能有一个格式错误的数组。以下是一个演示此问题的示例:
"users": {
"6179eb29-9691-4828-be5a-28a94e84703b": {
"-KLWoGzjymD0Sgvf5Rcs": {
"email": "jaycarter@gmail.com",
"lastname": "cater",
"username": "jay"
}
},
"6a210785-0a73-4c83-b3e1-d3828f9d8a3b": {
"-KLqMiLTB71dTh7PrVpL": {
"email": "k@gmail.com",
"lastname": "john",
"username": "smith"
}
}
答案 1 :(得分:1)
这不是你如何迭代数组。您应该使用完整的for循环或forEach
函数:
for(let i = 0, l = result.length; i < l; i++) {
console.log(result[i].text);
}
或
result.forEach((item) => {
console.log(item);
});