this.orderTrackings.map((v:any)=>{
let request = {
"description": "",
"destinationFromCode": v.destinationfromCode,
"destinationToCode": v.destinationtoCode,
"ordItemNum": v.orditemnum,
"ordnum": this.ordnum
};
this.restService.post( '/uomback/sordtracking/handlerequest', request).subscribe((r:any) => {
this.getOrderTrackingInfo(v.orditemnum,true);
});
我需要等到handlerequest得到响应才能调用下一个项目。有什么建议吗?
答案 0 :(得分:0)
我相信您可以使用exhaustMap
完成http请求,然后再转到下一个请求。
示例:
Observable.of(...this.orderTrackings)
.map((v:any) => ({
description: "",
destinationFromCode: v.destinationfromCode,
destinationToCode: v.destinationtoCode,
ordItemNum: v.orditemnum,
ordnum: this.ordnum,
}).exhaustMap((request) => {
return this.restService.post('/uomback/sordtracking/handlerequest', request)
.map((response: Response) => ({response, request});
}).subscribe((r:any) => {
this.getOrderTrackingInfo(r.request.ordItemNum, true);
});
使用此设置getOrderTrackingInfo
将在每POST
之后调用一次。
答案 1 :(得分:0)
在我看来,你不应该等待这个执行。只需将您想要做的所有内容添加到订阅中即可。异步操作是异步的,因为它们应该是。