我在我的组件中有一个服务,这个服务有一个方法从服务器返回一个字符串值。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