我在我的組件中有一個服務,這個服務有一個方法從服務器返回一個字符串值。Observable訂閱時間問題
服務:
getOrderBarcode(): Observable<string> {
return this.http.get(this.baseUrl + 'barcode/getbarcode')
// .map(this.extractData);
.map(res => res as string)
}
組件:
let barcodeService = this.barcodeService.getOrderBarcode();
debugger;
barcodeService.subscribe(result => order.OrderBarcode = result);
console.log(order.OrderBarcode);
// rest of the logic
然而,當.subscribe
把它叫做是不是在這一點上綁定的值,調試我發現,它在執行之後應用價值後,班上的一切,我怎樣才能解決這個問題?
更新基於該意見,並鏈接到另一個問題
服務方法:
getSomething(callback: (data) => void) {
debugger;
return this.http.get(this.baseUrl + 'barcode/getbarcode')
// .timeout(1000)
// .map(this.extractData);
.map(res => res as string)
}
組件:
let a = this.barcodeService.getSomething((data) => {
debugger;
console.log(data);
});
此調試器不被擊中......
這就是*究竟應該發生什麼*。你訂閱和使用observables的全部原因是**這個過程是異步**。 – jonrsharpe
[Angular 2 - 直接從Observable返回數據]的可能副本(https://stackoverflow.com/questions/37867020/angular-2-return-data-directly-from-an-observable) – jonrsharpe
好的,謝謝你指點我在正確的方向,如果我返回一個單一的值而不是一個流,是否可以在這裏使用承諾呢? – Haris