为什么在我的代码中永远不会调用完整函数

时间:2019-02-17 18:54:27

标签: angular typescript rxjs

我正在学习Observable,并尝试一些小事情。除了'observer.complete()'不会在订阅中调用'complete'方法之外,其他所有东西都正常运行。

我搜索了互联网,但未能解决我的问题。我也想知道如何编写通过取消订阅可观察对象而调用的函数。提前致谢。

let observable = new Observable<string>((observer) => {
  setTimeout(() => {
    observer.next('new1');
  }, 1000)
  setTimeout(() => {
    observer.next('new2');
  }, 3000)
  setTimeout(() => {
    observer.complete()
  }, 6000)

  }).subscribe((data) => {
  console.log(data),
    (err) => {
      console.log(err)
    },
    ()=>{
      console.log('completed')
    }


})

1 个答案:

答案 0 :(得分:3)

那是因为您仅编写了next回调

.subscribe((data) => {
     console.log(data)
    }, <=============================================== note } here
    (err) => {
      console.log(err)
    },
    ()=>{
      console.log('completed')
    }
)

或者简单地

.subscribe(
  console.log,
  (err) => {
    console.log(err)
  },
  () => {
    console.log('completed')
  }
)

Ng-run Example