> 웹 프론트엔드 > JS 튜토리얼 > 비동기 HTTP 호출 후 Angular Observable의 데이터에 올바르게 액세스하는 방법은 무엇입니까?

비동기 HTTP 호출 후 Angular Observable의 데이터에 올바르게 액세스하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-23 19:51:15
원래의
992명이 탐색했습니다.

How to Properly Access Data from an Angular Observable After an Asynchronous HTTP Call?

Angular에서 Observable/HTTP/Async 호출의 응답을 반환하는 방법

문제:

Observable이 반환됩니다. 비동기 호출을 통해 데이터를 호출하지만 데이터에 액세스하면 비동기 특성으로 인해 정의되지 않은 결과가 발생합니다. 작동.

서비스:

@Injectable()
export class EventService {

  constructor(private http: Http) { }

  getEventList(): Observable<any>{
    let headers = new Headers({ 'Content-Type': 'application/json' });
    let options = new RequestOptions({ headers: headers });

    return this.http.get("http://localhost:9999/events/get", options)
                .map((res)=> res.json())
                .catch((err)=> err)
  }
}
로그인 후 복사

구성요소:

@Component({...})
export class EventComponent {

  myEvents: any;

  constructor( private es: EventService ) { }

  ngOnInit(){
    this.es.getEventList()
        .subscribe((response)=>{
            this.myEvents = response;
        });

    console.log(this.myEvents); //This prints undefined!
  }
}
로그인 후 복사

이유:

비동기 작업을 완료하는 데 시간이 걸리지만 JavaScript는 실행됩니다. 즉시 동기 코드. console.log(this.myEvents); 서버에서 데이터가 수신되기 전에 실행됩니다.

해결책:

응답이 도착하면 구독 콜백을 사용하여 응답을 처리합니다.

this.es.getEventList()
    .subscribe((response)=>{
        this.myEvents = response;
        console.log(this.myEvents); //<-- not undefined anymore
    });
로그인 후 복사

결론:

내에서 비동기 작업을 처리하세요. 데이터가 수신된 후 데이터에 액세스하기 위한 콜백 또는 구독 함수. 이렇게 하면 데이터가 정의되지 않았거나 null이 아닌지 확인됩니다.

위 내용은 비동기 HTTP 호출 후 Angular Observable의 데이터에 올바르게 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿