我的组件中有一个服务,此服务有一个从服务器返回字符串值的方法。
服务:
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);
});
这个调试器没有被击中......
答案 0 :(得分:-1)
您的示例代码
barcodeService.subscribe(result => order.OrderBarcode = result);
console.log(order.OrderBarcode);
使用toPromise
并等待结果(或使用then
)。
更多:https://www.learnrxjs.io/operators/utility/topromise.html