首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引用最新的rxjs时获取rxjs错误

引用最新的rxjs时获取rxjs错误
EN

Stack Overflow用户
提问于 2016-04-14 03:07:49
回答 2查看 2.7K关注 0票数 10

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

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

代码语言:javascript
复制
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);

这是我正在获得的控制台输出。

代码语言:javascript
复制
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

Rxjs5api是否与rxjs2.5有很大不同,并且不再支持observer.onNext(42);sub.dispose()

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-14 03:59:43

更新2018/12:

RxJS v6.x引入了一个新的、更“功能”的API。要获得更多信息,请查看5>6 migration guide。原始示例代码仍然有效,但您必须导入of操作符,如下所示:

代码语言:javascript
复制
// ESM
import { of } from 'rxjs'
// CJS
const { of } = require('rxjs');

原始RxJS 5答案:

没错。RxJS 5被重写以提高性能,同时也符合ES7 Observable规范。看一下吉顿的RxJS 4->5 migration page

下面是一个有用的例子:

代码语言:javascript
复制
// 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本身很容易转换到。

票数 10
EN

Stack Overflow用户

发布于 2019-07-19 12:17:54

不确定这是否能帮助到外面的人,但我最后在这里遇到了一个类似的错误:

代码语言:javascript
复制
old.dispose is not a function

在我的例子中,问题在于我将一些旧的rxj与来自更新版本rxjs的可观测值混合在一起。

因此,我通过更新所有调用来使用最新的rxjs来解决问题。

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

https://stackoverflow.com/questions/36613167

复制
相关文章

相似问题

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