将Angular http发布分解为多个调用

时间:2019-11-28 04:44:49

标签: angular rxjs

如果我们同时发布太多项目,我们的服务就会超时,我正在寻找的是RxJs运算符,它将允许我将帖子序列化为多个帖子,例如

merge(
  chunk(items, 50).map(
    chunkItems => this.http.post('endPoint', chunkItems)
  )
).pipe(
  scan((errors, current) => [...errors, ...current], []);
)

但是我不希望它们像merge will那样并行运行,我希望它像一个序列化调用的switchMap。

chunk是将数组分解为较小块的函数

export const chunk = (arr, len) => {
  let chunks = [],
    i = 0,
    n = arr && arr.length;

  while (i < n) {
    chunks.push(arr.slice(i, (i += len)));
  }

  return chunks;
};

2 个答案:

答案 0 :(得分:1)

假设您的dataList类型的数组的协议计数为3,请尝试执行此操作。

glutPostRedisplay()

答案 1 :(得分:0)

我所做的是

from(chunk(items, 50)).pipe(
  concatMap(chunkItems => this.http.post('endPoint', chunkItems)),
  scan((errors, current) => [...errors, ...current], [])
);