JSBIN项目:RX.Js 5.0.0拉出'未定义'错误

JSBIN Project with RX.Js 5.0.0 Pulling 'Not Defined' Error

本文关键字:未定义 错误 0拉出 项目 RX Js JSBIN      更新时间:2023-09-26

当我使用以下规范运行一个新的JSBIN项目时:

-使用标签:JavaScript, Console

-添加RxJS 5.0.0

然后在JavaScript区域运行以下代码块:

var observable = Rx.Observable.create(observer => {
  setInterval(() => {
    observer.onNext('This is the output of my async operation');
  }, 2000);
});
observable.subscribe(response => console.log(response));

前面的代码应该在控制台区域呈现以下输出:

"This is the output of my async operation"

两秒后,控制台区域应该获得render:

"This is the output of my async operation"

但是,我收到以下错误:

"error"
-----------------------------
"ReferenceError: Rx is not defined
    at yivicazake.js:3:4
    at https://static.jsbin.com/js/prod/runner-3.39.12.min.js:1:13926
    at https://static.jsbin.com/js/prod/runner-3.39.12.min.js:1:10855

这是我第一次使用JSBIN将RxJS作为库,我希望有人有过这种特殊错误的经验。

我不确定你使用的是哪个确切的Rxjs beta版本,我在这里创建了一个jsbin,它对我来说工作得很好http://jsbin.com/henimevepa/edit?html, js、控制台、输出

这里有几点

- instead of '.onNext' in version 5 its just '.next'
- You need to subscribe to observer to run it.

我也在学习RxJS,这里有几点需要注意。现在,在RxJS v4和v5文档之间仍然非常容易混淆,所以一些链接可以帮助:

版本5的回购是这个https://github.com/ReactiveX/RxJS。/react - extensions/RxJS是针对v4的。两者都很有用,所以如果您正在跟随v4的在线课程(有很多),那么迁移文档将会有所帮助!

这本手册很有帮助,RxMarbles也是。

对于你的代码,试试这个:
// create subscriber
const createSubscriber = tag => ({
    next(item) { console.log(`${tag}.next ${item}`); },
    error(error) { console.log(`${tag}.error ${error.stack || error}`); },
    complete() { console.log(`${tag}.complete`); }
});
// interval
Rx.Observable
    .interval(2000)
    .take(5)
    .subscribe(createSubscriber('This is the output of my async operation'));

希望这对你有帮助!