首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >最终在订阅时可观察到

最终在订阅时可观察到
EN

Stack Overflow用户
提问于 2016-11-21 01:54:42
回答 2查看 124.6K关注 0票数 141

根据this artcle的说法,onCompletesubscribeonError功能是相互排斥的。

这意味着onErroronComplete事件将在我的subscribe中触发。

我有一个逻辑块,无论我收到一个错误,还是我成功地完成了我的信息流,都需要执行它。

我查找了像finally in python这样的东西,但我找到的只是finally,它需要附加到我创建的可观察对象上。

但我希望仅在订阅时和流结束后才执行该逻辑,无论是成功还是错误。

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2019-01-10 01:33:15

唯一对我起作用的就是这个

代码语言:javascript
复制
fetchData()
  .subscribe(
    (data) => {
       //Called when success
     },
    (error) => {
       //Called when error
    }
  ).add(() => {
       //Called when operation is complete (both success and error)
  });
票数 118
EN

Stack Overflow用户

发布于 2018-09-29 00:29:18

我现在在一个Angular应用程序中使用RxJS 5.5.7,使用finalize运算符在我的用例中有一个奇怪的行为,因为它在成功或错误回调之前被触发。

简单的例子:

代码语言:javascript
复制
// Simulate an AJAX callback...
of(null)
  .pipe(
    delay(2000),
    finalize(() => {
      // Do some work after complete...
      console.log('Finalize method executed before "Data available" (or error thrown)');
    })
  )
  .subscribe(
      response => {
        console.log('Data available.');
      },
      err => {
        console.error(err);
      }
  );

我不得不在订阅中使用add方法来实现我想要的功能。基本上是在成功或错误回调完成后的finally回调。例如try..catch..finally块或Promise.finally方法。

简单的例子:

代码语言:javascript
复制
// Simulate an AJAX callback...
of(null)
  .pipe(
    delay(2000)
  )
  .subscribe(
      response => {
        console.log('Data available.');
      },
      err => {
        console.error(err);
      }
  )
  .add(() => {
    // Do some work after complete...
    console.log('At this point the success or error callbacks has been completed.');
  });
票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40707379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档