angular - 发送 forkjoin api,每个 api 之间有延迟
问题描述
我目前正在从事一个角度项目,我必须使用 forkjoin 在ngrx 效果中发送多个api。这有一个问题,我必须延迟发送多个 api,就好像我一次发送一样,它们被取消了。我的通话效果如下所示:
@Effect()
timeslot$ = this.actions$
.ofType(a.ItemActionTypes.GET_TIME_SLOTS)
.map((action: a.GetTimeSlots) => action.payload)
.switchMap(payload => {
const serviceCol = payload.map(pl => this.service.getTimeSlots(pl));
return Observable.forkJoin(serviceCol).pipe(
mergeMap(result => {
return [
new a.GetTimeSlotsSuccess(
ItemSearchAdaptor.allTimeSlotAdaptor(result)
)];
})
).catch((e: HttpErrorResponse) => {
return Observable.of({});
});
});
谁能建议我可以用来在 API 发送之间延迟的任何方法。
解决方案
getTimeSlots()方法应该延迟返回 observables,如下所示。延迟运算符可用于延迟请求。
请注意,如果提供给 forkJoin 的任何内部 observables 错误,如果您没有在内部 observable 上正确捕获错误,您将丢失任何将或已经完成的其他 observables 的值。如果您只关心所有内部 observables 是否成功完成,您可以在外部捕获错误。
getTimeSlots(pl){
let observables = [];
observables.push(http.doDelete(null, {})
.pipe(delay(1000),
catchError(error => of(error))
))
retur observables;
}
推荐阅读
- reactjs - React 中的 MomentJS 问题
- vue.js - 如何在 Vue js 中编写 PWA?
- arrays - 使用一组键 ruby 过滤哈希数组
- c# - 如何检查LINQ中是否有空值?
- java - Spring MVC Bean 更新(再次执行 bean)
- javascript - 如何在 Cloud Firestore 中增加计数器
- node.js - 将 SSL 证书添加到 Nodejs
- python - 来自 scikit-learn 的 plot_partial_dependence() 为正确拟合的模型(例如 KerasRegressor 或 LGBMClassifier)错误地引发 NotFittedError
- tensorflow - TensorFlow 2.x Java 绑定
- flutter - 在不更新状态/重建小部件的情况下重绘 CustomPaint?