如何用新值编辑Observable数组并每隔X秒发射一次值

时间:2019-08-05 12:56:15

标签: http observable angular7 rxjs6

我正在使用Angular 7和rxjs 6。

  1. 我需要有关使用HTTP请求中的新值实现更新的Observable数组的帮助,
  2. 我需要多次获取新值(X),因为它来自可能延迟工作(可能会延迟一天)的队列。

这是我可观察的数组

  private _smsEvents$ = new BehaviorSubject(null);
  private smsUrl = environment.baseUrl + 'sms';

  get smsEvents$() {
    this.GetSmsEvents();
    return this._smsEvents$.asObservable();
  }

  set smsEvents$(value: any) {
    this._smsEvents$.next(value);
  }

所以我正尝试重新发送SMS事件并仅为此SMS事件更新阵列

GetSmsByID(smsId) {
    this.spinnerService.show();

    this.http.get(`${this.smsUrl}/get/${smsId}`).subscribe((res: SmsEvent) => {
      let tmpList = this._smsEvents$.getValue();
      tmpList.forEach(x => {
        if (x.ID === res.ID) {
          x = res;
        }
      });
      this.smsEvents$ = tmpList;

      this.spinnerService.hide();
    }, err => {
      this.spinnerService.hide();
    });
  }


ResendSms(smsId) {
    this.spinnerService.show();
    this.http.get(`${this.smsUrl}/resend/${smsId}`).subscribe(res => {
      this.GetSmsByID(smsId);
      this.spinnerService.hide();
    }, err => {
      this.spinnerService.hide();
    });
  }

我尝试了许多不同的变体来实现(使用重试,计时器,switchMap等)

  1. 问题在于数组未更新。
  2. 我要重试5次,或者res.sent = true

请帮助:)

0 个答案:

没有答案