代码之家  ›  专栏  ›  技术社区  ›  Maciej Wojcik

一系列请求-(已取消)请求-HttpClient

  •  0
  • Maciej Wojcik  · 技术社区  · 5 年前

    我遇到了一个与一系列HTTP GET相关的奇怪问题 HttpClient 使用角度v7。

    Items ,对于每个数字,我想请求API。如果阵列没有那么大,如果它大约在10以上,那么整个机制工作正常 chrome dev tools 我知道所有的请求都是 (canceled)

    const nextDataSource = [];
    
    const dataUpdate$ = from(this.dataSource).pipe(
          mergeMap(item => this.api.getNextItems(item).pipe(
            map(result => ({items: result, item: item})),
            tap((result: { items: Item[], item: Item }) => this.updateDataSource(result, nextDataSource)),
          )),
          finalize(() => {
            this.dataSource = [...nextDataSource];
          })
        );
    
    this.subscription.add(dataUpdate$.subscribe());
    

    这很奇怪,但如果我加上一个延迟,例如 delay(10) 在这个管道中请求没有被取消?

    如何阻止这种情况,防止取消?我一点也不想要!

    0 回复  |  直到 5 年前
        1
  •  0
  •   Fan Cheung    5 年前

    如果后续请求触发得太快,我会遇到类似的情况

    from(this.dataSource).pipe(
       concatMap(item =>timer(500),item=>item), 
       ....