2017-08-31 56 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

你不能這樣做,因爲'subscribe'是返回一個'Observable'和HTTP調用是'asynchronous'。 – Milad

回答

1

這是不可能的,因爲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 
    }); 
相關問題