【问题标题】:Why would we want to have an Observable of a Specific Type为什么我们想要一个特定类型的 Observable
【发布时间】:2021-01-05 22:39:47
【问题描述】:
//declare observable
somenums: Observable<number[]>

//instantiate the oberservale
somenums: new Observable<number[]>(somefunc)

我为什么要声明一个具有特定类型的 observable。 将 observable 设为 number[] 类型是否表示可观察将返回 number[] 给观察者? 如何在实例化期间和实例化后将数据流式传输到 observable? 以及在这种情况下观察者将如何处理流。

【问题讨论】:

  • "是否将 observable 设为 number[] 类型是否表示可观察会返回一个 number[] 给观察者?" 是
  • 在这种情况下,在实例化期间和实例化之后,您将如何返回一个数字[]。 @VLAZ
  • 初始化期间不可能产生值。首先必须完成初始化,然后然后 observable 可以产生值。至于如何产生number[],只需执行subscriber.next([1, 2, 3])之类的操作即可。

标签: typescript rxjs angular-observable


【解决方案1】:

键入 Observables

observable 的类型告诉您传递给观察者的next 回调函数的对象的类型。最重要的是,Observables 可以发出 completeerror 事件(不能同时发出两者)。

您输入 observables 的原因与您输入 ArrayFunction 的返回值的原因相同。这样您的 IDE、解释器、编译器等可以帮助您确保您的程序执行您想要的操作。

使用 Observables(基本)

// declare observable
somenums: Observable<number[]>

// instantiate Observable 
// (from scratch)
somenums: new Observable<number[]>(observer => {
  observer.next([1,2,3]);
  observer.next([7,6,5]);
  observer.next([4,4,4]);
  observer.complete();
  return {
    unsubscribe: () => {/*do nothing*/}
  }
});

// instantiate the same observable 
// (from RxJS creation operator)
somenums: from([
  [1,2,3],
  [7,6,5],
  [4,4,4]
]);

// subscribe to observable, print emissions to the console
somenums.subscribe(console.log);

// Append the value 4 to each array of numbers, then print to the console
somenums.pipe(
  map(x => ([...x, 4]))
).subscribe(console.log);

【讨论】:

    猜你喜欢
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 2015-05-23
    • 2012-01-18
    • 2014-10-06
    • 2013-05-28
    相关资源
    最近更新 更多