检查可观察对象是否完整

时间:2019-04-12 08:29:15

标签: javascript angular typescript rxjs observable

可观察性完成后,我需要显示一个烤面包,我该怎么做,我的代码是:

this.commerceCtrl.UpdateCategories(this.toSave).subscribe(data => {
  }, error => {
    this.mainFunction.showError(error)
  }),
  complete => {
    this.mainFunction.showToast(this.localization.message_ok)
  }

我试图这样做:

this.commerceCtrl.UpdateCategories(this.toSave).subscribe(data => {
  }, error => {
    this.mainFunction.showError(error)
  }),
  () => {
    this.mainFunction.showToast(this.localization.message_ok)
  }

但这不起作用

3 个答案:

答案 0 :(得分:6)

您必须传递complete处理程序作为要订阅的第三个参数。

在您的代码中,只需将右括号移到末尾即可。

更改此代码:

this.commerceCtrl.UpdateCategories(this.toSave).subscribe(data => {
  }, error => {
    this.mainFunction.showError(error)
  }), // <===== Remove this parenthesis
  () => {
    this.mainFunction.showToast(this.localization.message_ok)
  }; // <====== It should be here

对此:

this.commerceCtrl.UpdateCategories(this.toSave).subscribe(
  data => {
    // next handler body
  }, error => {
    this.mainFunction.showError(error)
  }, () => {
    this.mainFunction.showToast(this.localization.message_ok)
  }
);

答案 1 :(得分:1)

您可以将对象参数赋予subscribe()函数:

this.commerceCtrl.UpdateCategories(this.toSave).subscribe({
   next: value => { ... },
   error: err => { ... },
   complete: () => { ... }
});

答案 2 :(得分:0)

您可以尝试使用最终方法

this.commerceCtrl.UpdateCategories(this.toSave).finally(() => {
    // complete
}).subscribe((data) => {
    // success
}, (error) => {
    // error
});

来源:https://github.com/angular/angular/issues/7865#issuecomment-204408637