是否可以在两个回调中明确调用onnext()和oneRror()的函数



我继续编写在两个回调中调用相同清理功能的代码:

lockDownStuff();
someHttpClientCall().subscribe((result: any) => {
    handleResult(result);
    unlockStuff();
}, (error: any) => {
    unlockStuff();
});

当我真的想调用我的功能以关闭我的全局旋转器,可重新可重新可重新易旋转的表单字段等。以这种方式:

lockDownStuff();
someHttpClientCall().subscribe((result: any) => {
    handleResult(result);
    unlockStuffNoMatterWhat();
});

someHttpClientCall()
  .subscribe((result: any) => {
    handleResult(result);
  })
  .finally((finally: any) => unlockStuff());

在假设someHttpClientCall返回的可观察到的是有限的(这意味着它将在某个时候发出a 完整事件),您可以使用finalize操作员如下:

来实现此目标
import {finalize} from 'rxjs/operators';
someHttpClientCall()
  .pipe(finalize(()=> unlockStuff()))
  .subscribe(...);

如果不是这种情况,您需要 thronst infinite 流到有限中,例如,通过有条件地进行排放它通过使用takeUntil

来满足某种条件
import {finalize, takeUntil} from 'rxjs/operators';
someHttpClientCall()
  .pipe(
     takeUntil(....),
     finalize(()=> unlockStuff())
  ).subscribe(...);

相关内容

  • 没有找到相关文章

最新更新