gpt4 book ai didi

javascript - 在一次 API 调用后设置延迟 5 秒

转载 作者:数据小太阳 更新时间:2023-10-29 04:13:10 27 4
gpt4 key购买 nike

在我的项目中,我遇到了一个挑战。即..我需要一个接一个地调用多个API。在这里,我为此使用了 RxJS flatMap 运算符。它正在按预期工作。但我的额外要求是我需要为每个 API 调用设置 10 秒延迟。我使用了“throttle”运算符,但它不起作用。我在下面附上了我的代码。谁能告诉我们我在代码中做错了什么。

public makeSubmitAPI(oncallData): Observable<any> {
let orderPayload = this.postAPIService.prepareOrderPayload(oncallData);
let url = "";
let orderResponse: any;
return this.apiCallsService.apiCall('placeOrder', orderPayload, 'post', false)
.map((orderRes: any) => {
orderResponse = orderRes;
url = `orders/${orderResponse.data.id}/progress`;
let progressPayload = this.postAPIService.prepareProgressAPIData(oncallData, orderResponse.data, this.userType);
return progressPayload;
}).pipe(throttle(val=> interval(5000)))
.flatMap(progressPayload => {
return this.apiCallsService.apiCall(url, progressPayload, 'post', false).pipe(throttle(val=> interval(5000)))
})
.flatMap(progressResponse => {
return Observable.combineLatest(
orderResponse.data.serviceAddresses.map((address, index) => {
let fullfilledAPI = this.postAPIService.prepareFullfilledAPIData(oncallData, orderResponse.data, progressResponse, this.userType, index, orderPayload);
return this.apiCallsService.apiCall('fullfillment', fullfilledAPI, 'post', false).map(res => res);
})
)
});
}

谢谢

最佳答案

您可以使用 concatMap(而不是包装 API 调用的 flatMap)一个接一个地调用,然后 delay() 强制延迟 5 秒:

.concatMap(progressPayload => this.apiCallsService.apiCall(url, progressPayload, 'post', false)
.pipe(
delay(5000)
)
})

关于javascript - 在一次 API 调用后设置延迟 5 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52454913/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com