2016-07-13 4 views
3

У меня есть следующий код.Angular2: Return Observable in Promise

getListCategoryOfQuestion() { 
    return this.authService.getToken() 
     .then(token => { 
      let headers = new Headers(); 
      headers.append('Authorization', `Bearer ${token}`); 
      return this.http.get('http://localhost:3333/question/getCategories', {headers:headers}) 
       .map(res => res.json()) 
       .catch(this.handleError); 
     }) 
     .catch(this.handleError); 
} 

Я знаю, что я не могу вернуть значение синхронизации из обещания, но наблюдаемые являются асинхронными. Возвращение этой функции имеет типа Promise<Observable< > >

Я просто хочу знать, как подписаться на этот наблюдаемый в данный момент я попытался это:

loadCategory(){ 
    this.questionDBService.getListCategoryOfQuestion() 
     .subscribe(data => { 
      this.categories = data; 
      console.log(data); 
     }); 
} 

Но, конечно, это не работает, потому что результат не наблюдаемый, так что кто-нибудь знает, как справиться с этой проблемой?

ответ

3

Обещание с наблюдаемым ... это хорошо :) попробовать это:

loadCategory(){ 
    this.questionDBService.getListCategoryOfQuestion().then((observer) => { 

     observer.subscribe((data) => { 
      this.categories = data; 
      console.log(data); 
     }); 

    }); 

} 
+0

Спасибо вам, так что логично, когда вы даете мне ответы ахах. Есть ли лучший способ сделать это, не поместив наблюдаемого в обещание? :п –

Смежные вопросы