我进行了一个返回数组的 api 调用。我需要遍历这个数组并为每个项目执行一个新请求。以下代码工作正常:
return this.expeditionService.getTranssmartBookingXml(request).pipe(
concatMap((response) => {
return from(response.barcodes).pipe(
concatMap((barcode) => {
return this.expeditionService.saveTranssmartBarcode({
...saveBarcodeRequest,
barcode: barcode,
});
})
);
})
);
但是,当所有项目都完成后,我想提出另一个请求。只有一个。
但是当我使用以下代码时,当 from 数组中的第一项完成时,该过程停止。
return this.expeditionService.getTranssmartBookingXml(request).pipe(
concatMap((response) => {
return from(response.barcodes).pipe(
concatMap((barcode) => {
return this.expeditionService.saveTranssmartBarcode({
...saveBarcodeRequest,
barcode: barcode,
});
}),
concatMap(() => {
const transsmartSaveShipmentRequest: TranssmartSaveShipmentRequest =
{
reference: this.shipmentReferenceResult!.reference,
price: this.transsmartDoBookingResponse!.price,
trackingUrl: this.transsmartDoBookingResponse!.trackingUrl,
};
return this.expeditionService.saveTranssmartShipment(
transsmartSaveShipmentRequest
);
})
);
})
我也有一些稍微修改过的代码在它工作的地方,但是最后的请求是为数组中的每个项目执行的,它只需要执行一次。
有人知道如何解决这个问题吗?提前致谢!!