javascript – Observable.create(…).map不是一个函数

我只是学习Pluralsight – 使用RxJS开始反应式编程

为什么不工作?

我使用RXJS 6.2.0

import {Observable} from 'rxjs';

const numbers = [1, 5, 10];
const source = Observable.create(observer => {

  let index = 0;
  let produceValue = () => {
    observer.next(numbers[index++]);

    if (index < numbers.length) {
      setTimeout(produceValue, 2000);
    } else {
      observer.complete();
    }
  };

  produceValue();

}).map(n => n * 2)
  .filter(n => n > 4);

source.subscribe(
  value => console.log(`value: ${value}`),
  e => console.log(`error: ${e}`),
  () => console.log('complete')
);

解决方法:

我正在做相同的课程,并能够使用管道并在箭头函数的参数中键入变量,以下列方式解决此问题:

...
let source = Observable.create(observer => {

    let index = 0;
    let produceValue = () => {

        observer.next(numbers[index++]);

        if (index < numbers.length) {
            setTimeout(produceValue, 250);
        } else {
            observer.complete();
        }
    }

    produceValue();
}).pipe(
    map((n: number) => n * 2),
    filter((n: number) => n > 4)
);
...

需要在管道中使用运算符是RxJs工作方式的最新变化,因此某些课程和参考可能已过时.

上一篇:Java中的集合(十一) 实现Map接口的TreeMap


下一篇:javascript – Angular 2 – 链接http请求