gpt4 book ai didi

javascript - 引用最新的 rxjs 时出现 rxjs 错误

转载 作者:数据小太阳 更新时间:2023-10-29 03:51:10 24 4
gpt4 key购买 nike

我正在使用本教程 https://egghead.io/lessons/rxjs-creating-an-observable这是引用 2.5.2 rxjs 版本。

我引用的是最新的 rx.umd.js来自 rxjs@5.0.0-beta.6" npm 包 <script src="node_modules/rxjs/bundles/rx.umd.js"></script>这是我要运行的代码:

console.clear();

var source = Rx.Observable.create(function(observer){
setTimeout(function() {
console.log('timeout hit');
observer.onNext(42);
observer.onCompleted();
}, 1000);

console.log('started');
});

var sub = source.subscribe(function(x) {
console.log('next ' + x);
}, function(err) {
console.error(err);
}, function() {
console.info('done');
});

setTimeout(function() {
sub.dispose()
}, 500);

这是我得到的控制台输出。

Console was cleared
script.js:10 started
script.js:22 Uncaught TypeError: sub.dispose is not a function
script.js:5 timeout hit
script.js:6 Uncaught TypeError: observer.onNext is not a function

笨蛋:https://plnkr.co/edit/w1ZJL64b8rnA92PVuEDF?p=catalogue

rxjs 5 api 与 rxjs 2.5 和 observer.onNext(42); 有很大不同吗?和 sub.dispose()不再支持?

最佳答案

2018/12 更新:

RxJS v6.x 引入了一个新的、更“函数式”的 API。看看 5>6 migration guide获取更多信息。原始示例代码仍然有效,但您必须像这样导入 of 运算符:

// ESM
import { of } from 'rxjs'
// CJS
const { of } = require('rxjs');

原始 RxJS 5 答案:

没错。 RxJS 5 被重写以提高性能并符合 ES7 Observable 规范。查看RxJS 4->5 migration page在 Github 上。

这是一个工作示例:

// Create new observable
const one = Observable.of(1,2,3);

// Subscribe to it
const oneSubscription = one.subscribe({
next: x => console.log(x),
error: e => console.error(e),
complete: () => console.log('complete')
});

// "Dispose"/unsubscribe from it
oneSubscription.unsubscribe();

许多方法已重命名,但 API 本身很容易过渡到。

关于javascript - 引用最新的 rxjs 时出现 rxjs 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36613167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com