我只是学习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工作方式的最新变化,因此某些课程和参考可能已过时.