首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >observable.subscribe()和observable.subscribe({ })有什么区别?

observable.subscribe()和observable.subscribe({ })有什么区别?
EN

Stack Overflow用户
提问于 2016-11-09 10:45:06
回答 2查看 2.5K关注 0票数 0

在Rxjs中,我知道subscribe方法在可观察的执行中有三种类型的值:next、error、complete.It。在subscribe()方法中编写箭头函数很容易,但我在某个地方遇到了subscribe({})方法,我不知道它在means.for示例中是什么:

代码语言:javascript
复制
var observable = Rx.Observable.create(function (observer) {
  observer.next(1);
  observer.next(2);
  observer.next(3);
  setTimeout(() => {
    observer.next(4);
    observer.complete();
  }, 1000);
});

console.log('just before subscribe');
observable.subscribe({
  next: x => console.log('got value ' + x),
  error: err => console.error('something wrong occurred: ' + err),
  complete: () => console.log('done'),
});
console.log('just after subscribe');

在此示例中,它使用了observable.subscribe({}),以及如下所示不同表达式示例:

代码语言:javascript
复制
getHeroes() {
    this.heroService.getHeroes()
                     .subscribe(
                       heroes => this.heroes = heroes,
                       error =>  this.errorMessage = <any>error);
  }
EN

回答 2

Stack Overflow用户

发布于 2016-11-09 12:26:15

有两种方法可以调用.subscribe()

在onNext、onError、onComplete的1-3个回调中,将观察者作为单个parameter

  • Passing传入的

您似乎熟悉的方法是后者。从本质上讲,观察者只是一个具有.next().error().complete()方法的对象,在内部,这些方法是可观察者在每个事件上调用的方法。

您的第一个代码示例确实传入了一个具有这三个方法的对象,因此它作为观察者成功地工作,但是我看不到任何东西表明您应该能够使用这样的普通对象作为观察者。如果你想使用观察者,你应该创建一个实际的观察者,并将其传入:

代码语言:javascript
复制
var observer = Rx.Observer.create(
  x => console.log('got value ' + x),
  err => console.error('something wrong occurred: ' + err),
  () => console.log('done')
);

observable.subscribe(observer);
票数 2
EN

Stack Overflow用户

发布于 2016-11-09 13:55:56

这并不是特定于subscribe()的,每个方法或函数调用都是相同的。它是关于按位置或按名称传递参数。当传递对象文字时,使用对象属性名称将传递的值赋给方法参数。{}只是一个空对象(没有参数)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40499560

复制
相关文章

相似问题

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