代码之家  ›  专栏  ›  技术社区  ›  Sergey

RXJS生成可中断请求序列

  •  0
  • Sergey  · 技术社区  · 6 年前

    我需要对一个API进行一系列调用(这个序列的长度是可变的)。在每一次迭代中,我只想在成功并且没有向观察者返回错误的情况下继续。此外,这些请求不需要以前请求中的任何数据。

    我该如何实现这个请求队列?

    现在我把它看作是一个递归调用的方法,直到请求数组结束。

    sendQueue(list: any[]) {
        const {request, transferData} = list[0];
        this.send(request, transferData).subscribe(msg => {
            if (list.length > 0) {
                this.sendQueue(list.slice(1));
            } else {
                return of(true);
            }
        }, err => {
            this.ns.showError(err);
            return of(false);
        });
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   martin    6 年前

    你可以使用 concat . 它将一个接一个订阅每个可观察到的源,如果其中任何一个抛出错误,那么它将停止。

    sendQueue(list: any[]) {
      const sources = list.map(({ request, transferData }) => this.send(request, transferData));
      return concat(...sources);
    }