2017-08-31 12 views
-1

メソッドの結果としてhttp呼び出しの結果を作成したいと思います。例えば:私は上記のコードを修正する方法を知っているメソッドの結果としてhttp呼び出しの結果をどのように形成するか?

getPersonId(idBook: number): number { 
    return this.mpShipmentWebAPI 
     .GetLast({ bookID: idBook }) 
     .subscribe((books) => { 
      return Number(books.Data[0].ID); 
     });    
} 

:エラーと

コード

getPersonId(idBook: number): number { 
    return this.mpShipmentWebAPI 
     .GetLast({ bookID: idBook }) 
     .subscribe((books) => { 
      this.handleData(books), 
     });    
} 

私が欲しいものは、次のようにして、この結果をチェックすることです:

let idPerson = this.getPersonId(idBook); 
if (idPerson > 0) { 
    //the rest code here 
} 

できますか?

+0

あなたは、それを行うことはできませんが、 'asynchronous'です。 – Milad

答えて

1

httpコールが非同期であるため不可能です。それらを同期させようとすると、他のすべてがフリーズするので、お勧めしません。このされます正しい方法: `subscribe`は` Observable`とHTTP呼び出しを返しているので

getPersonId(idBook: number): Observable<number> { 
    return this.mpShipmentWebAPI 
     .GetLast({ bookID: idBook }) 
     .map(books => this.handleData(books));    
} 

...

this.getPersonId(idBook) 
    .filter(idPerson => idPerson > 0) 
    .do(idPerson => { 
     // rest of your code 
    }); 
関連する問題