FirebaseListObservable 개체의 컬렉션을 반환하는 서비스 호출이 있습니다. 이 같은 일반적인 자바 스크립트 배열로 각에서 특정 속성 (사용자 이름)을 추가하려고 :각도 2를 사용하여 관찰 가능 객체의 속성을 배열에 추가하는 방법은 무엇입니까?
getUsernames(): string[] {
var userNameArray = [];
this.userList = this.service.getUsers();
this.userList.subscribe(
users => {
users.map(user =>
//console.log(user.userName)
userNameArray.push(user.userName)
)
}
);
console.log(userNameArray[0]);
return userNameArray;
}
이 줄
console.log(userNameArray[0]);
인쇄를 "정의되지 않은". 구독 방식의 비동기 특성 때문입니까? 그렇다면 어떻게 이것을 극복 할 수 있습니까? 그렇지 않다면 배열에 값이 추가되지 않는 이유는 무엇입니까?
도움 주셔서 감사합니다.
편집 :
import { Injectable } from '@angular/core';
import { AngularFire, FirebaseListObservable } from 'angularfire2';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class TwitchDatabaseService {
userNames: FirebaseListObservable<any[]>;
constructor(private af: AngularFire) {
this.userNames = af.database.list('/userNames');
}
getUsers(): FirebaseListObservable<any[]> {
return this.userNames;
}
을
명확성을 위해, 여기 중포 기지에서 데이터를 가져옵니다 서비스에 대한 코드는 observable이 비동기 적이기 때문에'subscribe' 콜백이 아직 호출되지 않았기 때문입니다. –
구독 방식의 비동기 특성 때문입니까? -> 물론 그렇습니다 –
배열을 반환하기 전에 구독이 완료되었는지 확인할 수있는 방법이 있습니까? – dpberry178