2017-07-10 1 views
-2

J'obtiens une valeur indéfinie à une variable dans l'angle 2. J'ai une fonction qui appelle un service qui fournit des données pour initialiser une variable, maintenant je fournis cette variable à une autre fonction qui fait un obtenir une requête http. Et obtenir une requête incapable de traiter comme variable dans undefined.Obtention de valeurs indéfinies après l'appel de service angulaire 2

code:

variable:any; 
constructor(private http: Http, private serviceOne: ServiceOne){ 
function1(); //service call to get data 
function2(); //http get request 
} 

function1(){ 
calls request //subscribes data 
data =>{this.variable = data.var}; 
} 

function2(){ 
console.log(this.variable); //undefined 
http get request uses this.variable 
} 

Répondre

0

Il semble que votre function1() fait un appel asynchrone pour fixer des données à ce sujet. Variable. Si c'est le cas, vous devez attendre la fin de la fonction async avant de passer à function2().

Essayez de faire

variable:any; 
constructor(private http: Http, private serviceOne: ServiceOne){ 
function1(); //service call to get data 
} 

function1(){ 
yourAsyncCall(). subscribe(res=>{ 
this.function2(res); 
}) 
} 

function2(variable){ 
this.variable=variable ; 
//Use variable in your http requeat 
} 
+0

Comment puis-je faire synchrone? @Gili –

+0

Cela dépend de votre source de données, mais s'il a été récupéré sur le serveur, il ne peut pas être synchrone. La requête http par nature est asynchrone. Pourquoi voulez-vous que ce soit synchrone? –