即使将元素推入其中,数组元素也未定义[重复]
Posted
技术标签:
【中文标题】即使将元素推入其中,数组元素也未定义[重复]【英文标题】:Array element is undefined even after pushing elements into it [duplicate] 【发布时间】:2018-04-01 12:40:54 【问题描述】:我正在构建一个视频保存服务作为一个项目,并从数据库response.array[]
获得用户保存的视频数组,然后我将videoId
推送到显示数组video[]
中,但显示相应的@ 987654324@ 使用 console.log()
它一直未定义。
我有如下代码 sn-p。
let video = [];
this.service.nextVideo().subscribe( response =>
response.array.forEach(element =>
video.push(element.videoId);
);
)
console.log(video[0]); //Output is undefined
完整的代码sn-p是这样的
nxtVideo()
let video = [];
this.service.nextVideo().subscribe( response =>
response.array.forEach(element =>
console.log(element.videoId);//Display's video id
video.push(element.videoId);
);
)
console.log(video[0]); //Output undefined
console.log(video); //Output shows all elements but on accessing specific elements it shows undefined
return (video[this.offset++]); //offset is a global variable to measure watched videos
Launch()
let videoId = this.nxtVideo();
//The Display table starts here
【问题讨论】:
因为这似乎是异步console.log(video[0])
在异步调用结束之前执行
可能是因为response
方法在console.log
语句已经执行后被异步调用了。
感谢您的评论,我该如何解决?因为我需要将video[0]
返回到另一个变量,因为整个 sn-p 都在一个不同的函数中。
【参考方案1】:
试试这个代码。它必须是工作,因为它的异步功能。
let video = [];
this.service.nextVideo().subscribe( response =>
response.array.forEach(element =>
video.push(element.videoId);
);
console.log(video[0]); //Output is undefined
)
【讨论】:
感谢您的回答,但我需要将video[0]
返回到另一个变量,因为整个 sn-p 都在不同的函数中。与 nextVideo = Video();
和 Video()
类似的是代码 sn-p。它可能并不总是video[0]
,可能是任何值,比如video[k]
你能提供完整的文件吗?
我已经更新了这个问题。谢谢。以上是关于即使将元素推入其中,数组元素也未定义[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Alt 通量操作:即使调用 this.generateActions,_this.actions 也未定义