即使在向其中推入元素后,数组元素仍未定义
问题描述:
我正在构建视频保存服务作为项目,并从数据库response.array[]
获得用户保存的视频数组,然后将videoId
推入显示阵列video[]
,但在显示各自videoId
使用console.log()
它不断未定义。即使在向其中推入元素后,数组元素仍未定义
我有如下的代码片段。
let video = [];
this.service.nextVideo().subscribe(response =>
{
response.array.forEach(element => {
video.push(element.videoId);
});
})
console.log(video[0]); //Output is undefined
完整的代码片段就像这样
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
}
答
试试这个代码。它必须是工作,因为它的异步功能。
let video = [];
this.service.nextVideo().subscribe(response =>
{
response.array.forEach(element => {
video.push(element.videoId);
});
console.log(video[0]); //Output is undefined
})
,因为这似乎是异步'的console.log(视频[0])'是异步调用结束前 –
可能是因为'response'方法后'console.log'声明已是异步调用执行执行。 – gurvinder372
感谢您的评论,我如何解决它? 因为我需要将'video [0]'返回到另一个变量,因为这整个片段出现在不同的函数中。 – Nithin