2017-12-27 5 views
0
user: User 

this.httpService.getCurrentUser() 
.subscribe(
    data => { 
     this.user = JSON.parse(data["_body"]).value[0]; 
      console.log("1" +this.user) 
     }, 
    error => console.error(error) 
    ); 
console.log("2"+this.user); 

이 함수에서 나는 내 currentUser를 가져 와서 변수에 넣습니다. 내 this.user를 처음으로 기록하면 처음에는 정확한 정보가 있지만 두 번째 로그에는이 정보가 기록됩니다 오직 [객체] [객체] 라고만 말합니다.하지만 왜? 응답 데이터는 해당 기능 중에 변수에하지만 당신은 문자열로 먼저 this.user 개체를 변환하는 자바 스크립트로 말할 console.log("2"+this.user);를 사용하여 나중에각도 변수 저장 응답 데이터

답변

0

을 잃게 ([object Object] 인) 다음 2와 CONCAT을 할 것 같다.

또한 console.log(2...)이 먼저 발생합니다. console.log(1...)은 서버에서 데이터를 가져온 후에 발생합니다.

또한 나는 당신이 this.user을 인쇄하는 동안 this.User에 대한 서버의 응답을 할당하는 참조 -

내 생각 엔 당신이 서버에서 개체를로드하는 것입니다 자본 U.를 확인할 수 있습니다. 그냥 응답 console.log(this.user)을 사용하십시오.

+0

은 나에게 의미가 없습니다. 왜 자바 스크립트는 두 번째 문자열에서만 문자열로 변환한다고 생각하나요? – Kai

+0

정확한 출력을 제공하면 도움이됩니다. 나는 당신이'this.user'에 어떤 디폴트 값을 가지고 있다고 생각합니다. 그러므로 그것은 예상 된 결과를 출력합니다. 서버에서 데이터를 가져온 후에는 객체를 할당합니다. –

+0

내가 실제로하려고하는 것은 내 API에서 사용자 개체를 가져 와서 내 http.service (모든 http.get, http.post, http.patch가있는 곳)로 보내고 사용자 유형의 변수에 넣는 것입니다. (사용자 개체는 ID 이름과 같은 API에서 얻을 수있는 모든 물건을 가지고 있습니다.) http.service에서 이전에 저장 한 사용자를 반환하는 다른 함수가 있습니다. 그래서 나는 그 함수를 호출함으로써 어디서나 currentUser에 접근 할 수있다. – Kai

0

보유하고있는 구독은 모두 비동기 코드 여야합니다.

this.httpService.getCurrentUser() 
.subscribe(
    data => { 
     // This may or not (probably not) run first 
     }, 
    error => console.error(error) // This may never run, if error doesn't occurs. 
    ); 

// This will run after the subscription is made. Almost always before the success callback. 
console.log("2"+this.user); 

HTTP 요청과 같은 비동기 응답에 의존하는 모든 것이 내부에 있어야합니다.

+0

저를 도와 주셔서 감사합니다. 그 지금 일하고있어. – Kai