当值不存在时重试 API 调用

Retry API call when value is not there

有没有办法连续轮询我的 API 直到检索到一个值(但在失败时停止)?现在,它发出呼叫,但由于当时没有任何东西,它不会重试。我希望重试继续,除非调用失败。

组件

  ngOnInit(): void {
     this.getCurrentUser(this.uid);
  }

  getCurrentUser(uid: string) {
    this.userService.getUser(uid).then((user: IUser[]) => {
      if (user && user.length > 0) {
        this.user = user[0];
      }
    });
  }

服务

  getUser(uid: string): Promise<Object | IUser[]> {
    return this.firebaseService.generateToken().then((token: string) => {
      return this.httpClient
        .get(`${environment.apiBasePath}/users/${uid}`, {
          headers: { authorization: `Bearer ${token}` },
        })
        .toPromise();
    });
  }

如果没有返回数据,则从自身内部再次调用该函数。

getCurrentUser(uid: string) {
    this.userService.getUser(uid)
      .then((user: IUser[]) => {
        if (user && user.length > 0) {
          this.user = user[0];
        } else {
          this.getCurrentUser(this.uid)
        }
      })
      .catch(error = console.error(error);
  }

或许可以限制您希望这种情况发生的次数?或者设置在召回时使用 setTimeout(在 else 子句中),这样它就不会发生得太快?