【发布时间】: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 都在一个不同的函数中。
标签: javascript angularjs arrays node.js