取消订阅RxJS订阅者onCompleted,它是多余的吗?

时间:2018-05-23 14:38:45

标签: angular rxjs

我想知道这段代码是否有任何意义:

let subs : Subscription;

// getObjectInfo retrieves object information from a MySQL DB
subs = this.ObjectService.getObjectInfo(item.id_obj)
        .subscribe(
          (retObject : any) => {
            // Process object here
          },
          (error) => {
            // Error in API call
          },
          () => {
            // IS THIS REDUNDANT OR UNNECESSARY?
            subs.unsubscribe();
          }); 

我假装的是,一旦我从数据库中获取信息并且我处理它就确保订阅完成,但我不知道这是一个好方法还是不必要...... < / p>

我问这个的原因是因为我有时看到重复的API调用,我想知道它们是不是因为我没有以适当的方式完成订阅或类似的事情。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用takefirst

this.ObjectService.getObjectInfo(item.id_obj)
    .take(1) // or first()
    .subscribe(...)

所以它会在第一次发射后自动取消订阅