コンポーネントにサービスがあり、このサービスはサーバーから文字列値を返すメソッドを持っています。観測可能な購読タイミングの問題
サービス:
getOrderBarcode(): Observable<string> {
return this.http.get(this.baseUrl + 'barcode/getbarcode')
// .map(this.extractData);
.map(res => res as string)
}
コンポーネント:.subscribe
が、それは私がそれを実行した後に値を適用することがわかったデバッグした後、この時点で値をバインドされていないと呼ばれているが
let barcodeService = this.barcodeService.getOrderBarcode();
debugger;
barcodeService.subscribe(result => order.OrderBarcode = result);
console.log(order.OrderBarcode);
// rest of the logic
、どのクラスでもこの問題を回避するにはどうすればいいですか?
別の質問へのコメントやリンクに基づいてUPDATE
サービス方法:
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);
});
このデバッガは、ヒットされません...
*これはまさに起こりそうなことです*。サブスクリプションとオブザーバブルを使用している理由は、**プロセスは非同期です**。 – jonrsharpe
[角2 - Observableから直接データを返す]の可能な複製(https://stackoverflow.com/questions/37867020/angular-2-return-data-directly-from-an-observable) – jonrsharpe
私を指してくれてありがとう正しい方向で、ストリームではなく単一の値を返すのであれば、代わりにここで約束することができますか? – Haris