在执行回调函数后,我必须返回对父组件的可观察响应。
如果我把返回this._httpService.insertRMS(url,body); 没有回调,我能够得到响应,无论成功或错误。
据我所知,只能在可观察的响应类型中使用subscribe。在执行回调函数后,任何其他可用于消耗可观察的响应。
我在回调函数中写了 getParcelInfo 函数,因为重复避免,因为它需要这么多次才能实现其他功能
comp1.ts
parcelinfo(){
this._pmsToRMSService.createOrderDelivery(351).subscribe(//Error
response => {
alert("success");
},
error => {
alert("error");
});
}
comp2.ts
@Injectable()
export class PMSToRMSService {
private getParcelInfo(parcelid, callback): any {
let url = serviceAPI.urlParcel + parcelid;
this._httpService.getData(url).subscribe(
response => {
callback(response);
},
error => {
callback(error);
});
}
public createOrderDelivery(parcelid: number): Observable<any> {
return this.getParcelInfo(parcelid, pmsResponse => {
let body = pmsResponse;
let url = serviceAPI.urlRMSCreateOrder;
return this._httpService.insertRMS(url, body);//Output Need
});
}
}
答案 0 :(得分:0)
private getParcelInfo(parcelid, callback): any {
let url = serviceAPI.urlParcel + parcelid;
this._httpService.getData(url).subscribe(
response => {
callback(response);
},
error => {
callback(error);
});
}
getParcelInfo 函数未返回任何错误消息建议的内容。 此外你正在订阅(你正在调用订阅方法),记住你可以返回(如果你添加return关键字)订阅对象而不是Observable(照顾它)。
这应该是这样的:
@Injectable()
export class PMSToRMSService {
private getParcelInfo(parcelid, callback): any {
let url = serviceAPI.urlParcel + parcelid;
return this._httpService.getData(url)
.do(response => callback(response),
error => callback(error));
}
public createOrderDelivery(parcelid: number): Observable<any> {
return this.getParcelInfo(parcelid, pmsResponse => {
let body = pmsResponse;
let url = serviceAPI.urlRMSCreateOrder;
return this._httpService.insertRMS(url, body);
});
}
}