2017-10-20 11 views
1

Je construis un service d'enregistrement vidéo en tant que projet et ai un tableau des vidéos enregistrées de l'utilisateur obtenu à partir de la base de données response.array[], puis je pousse le videoId dans un tableau d'affichage video[] mais sur affichant le videoId respectif en utilisant console.log() il continue à venir indéfini.Array élément est indéfini même après avoir poussé des éléments

J'ai l'extrait de code comme ci-dessous.

let video = []; 
this.service.nextVideo().subscribe(response => 
{ 
    response.array.forEach(element => { 
    video.push(element.videoId); 
    }); 
}) 
console.log(video[0]); //Output is undefined 

L'extrait de code complet est comme tel

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 
    } 
+0

parce que cela semble être async 'console.log (vidéo [0])' est exécutée avant la fin de l'appel async –

+0

Peut-être parce que la méthode 'response' est invoqué de manière asynchrone après' déclaration console.log' a déjà été réalisé. – gurvinder372

+0

Merci pour le commentaire, Comment puis-je le résoudre? Comme j'ai besoin de renvoyer 'video [0]' à une autre variable car cet extrait entier entre dans une fonction différente. – Nithin

Répondre

0

Essayez ce code. ça doit être du travail, depuis sa fonction asynchrone.

let video = []; 
this.service.nextVideo().subscribe(response => 
{ 
    response.array.forEach(element => { 
     video.push(element.videoId); 
    }); 
    console.log(video[0]); //Output is undefined 
}) 
+0

Merci pour la réponse, mais j'ai besoin de renvoyer 'video [0]' à une autre variable car tout cet extrait vient dans une autre fonction. similaire 'nextVideo = Video();' et 'Video()' est l'extrait de code. Il ne peut pas toujours être 'video [0]' et peut être n'importe quelle valeur disons 'video [k]' – Nithin

+0

pouvez-vous donner le fichier complet? –

+0

J'ai mis à jour la question. Merci. – Nithin