标签: reactive-extensions-js

在Rx JS中触发自定义事件

我正在努力了解Reactive JS.在JQuery中,我可以触发自定义事件

$(document).bind('eventbus', function(e, d) { console.log(d);});
$(document).trigger('eventbus', 'test');
Run Code Online (Sandbox Code Playgroud)

并传递数据(即'测试').目前尚不清楚如何在RxJS中执行此操作.我可以尝试将jquery事件转换为

var observable = $(document).ToObservable('eventbus');
Run Code Online (Sandbox Code Playgroud)

但是observable返回事件对象,但不返回我的数据对象.如何使用RxJS触发包含数据的自定义事件?我是否总是需要搭载其他一些事件类型?我的目标是使用RxJS创建一个简单的事件总线.

javascript jquery reactive-extensions-js

3
推荐指数
1
解决办法
2796
查看次数

将可观察序列转换为可观察序列,仅从最近的可观察序列产生值

例1:

var obsNumber = /* observable that produce numbers */;
var obsText1 = /* observable that produce text */;
var obsText2 = /* observable that produce text */;
var obsContext = /* IF obsNumber < 5 THEN obsText1 ELSE obsText2 */;
Run Code Online (Sandbox Code Playgroud)

obsContext是一个可观察的,它将从obsText1或返回数据obsText2,具体取决于的值obsNumber.

例2:

var arrOfObservables = /* an array of observables */;
var obsNumber = /* observable that produce numbers */;
var obsSelect = /* arrOfObservables[obsNumber] */;
Run Code Online (Sandbox Code Playgroud)

obsSelect是一个可观察的,它将从arrOfObservables由所产生的值确定的数组中返回所选observable的数据obsNumber. …

reactive-programming reactive-extensions-js rxjs

3
推荐指数
1
解决办法
563
查看次数

无法从JS事件创建Rx.Observable

我试图弄清楚如何使用一个简单的例子来使用rx.js,但无法弄清楚我错过了什么参考或文件,这意味着它无法正常工作.

<!DOCTYPE html>
<html>
<head>
    <title>Empty</title>
    <script src="/Scripts/rx.js"></script>
</head>
<body>
    <script>
        var thing = Rx.Observable.fromEvent(document, 'keydown');
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这就是字面意思.脚本行正确加载从nuget新下载的rx.js 2.4.1的本地副本.

我收到错误Rx.Observable.fromEvent不是一个函数,所以我假设有一个缺少的引用.

这可能只是一个晚上的时间,但我很难看到我做错了什么.有帮助吗?

javascript reactive-extensions-js rxjs

3
推荐指数
1
解决办法
1199
查看次数

如何使用rxjs存储扫描的累积结果

合并后我有两个合并的observable和一个扫描.第一个是简单范围,另一个是主题.每当Subject发出一个新值时,onNext我在扫描中连接该值并将新数组作为累加器返回.如果我处理了我的订阅,然后再次订阅它会重放该范围中的值,但是我丢失了主题中的值.在下面的代码中,我希望我的第二个订阅的最终值为[1, 2, 3, 4, 5]

最好的方法是什么?现在我有另一个主题,我存储了最终值并订阅了它,但感觉不对.

这是一个简单的版本,演示了正在发生的事情:

var Rx = require('rx');

var source = Rx.Observable.range(1, 3);

var adder = new Rx.Subject();

var merged = source.merge(adder)
                    .scan([], function(accum, x) {
                        return accum.concat(x);
                    });

var subscription1 = merged.subscribe(function(x) {console.log(x)});
adder.onNext(4);
adder.onNext(5);

subscription1.dispose();

console.log('After Disposal');

var subscription2 = merged.subscribe(function(x) {console.log(x)});
Run Code Online (Sandbox Code Playgroud)

这输出:

[ 1 ]
[ 1, 2 ]
[ 1, 2, 3 ]
[ 1, 2, 3, 4 ]
[ 1, 2, 3, 4, 5 ]
After Disposal …
Run Code Online (Sandbox Code Playgroud)

javascript reactive-programming reactive-extensions-js rxjs

3
推荐指数
1
解决办法
3803
查看次数

执行http请求时带有多个forkjoin的rxjs

我正在执行一些 http 请求并使用 rxjs 来成功通知结果:

  getReportings(departmentId: number): Observable<any> {
        return Observable.forkJoin(
            this.http.get('/api/members/' + departmentId).map(res => res.json()),
            this.http.get('/api/reports/' + departmentId).map(res => res.json())
        );
    }
Run Code Online (Sandbox Code Playgroud)

当两个 http 请求都完成后,我想在 getReportings 方法中迭代报告数组,读取一些值,并为每个报告再次使用这些值创建一个新的 http 请求。

总而言之,我有 2 个(成员/报告)+ appr。4 到 8 个(其他东西)请求。

当所有约。完成了 6 到 8 个请求我想从成功处理程序中的前 6 到 8 个请求中获取所有数据。

我怎样才能用 rxjs 做到这一点?

更新

由于用户 olsn 要求提供更多详细信息,我现在了解他的担忧,我将更多数据放在这里(伪代码)6 到 8 个请求应该是什么样子:

getReportings(departmentId: number): Observable<any> {
    return Observable.forkJoin(
        this.http.get('/api/members/' + departmentId).map(res => res.json()),
        this.http.get('/api/reports/' + departmentId).map(res => res.json())
    ).switchMap((result: [any[], any[]]) => {
        let …
Run Code Online (Sandbox Code Playgroud)

reactive-extensions-js rxjs angular2-http angular

1
推荐指数
1
解决办法
4539
查看次数

RxJs中switchLatest和flatmapLastest之间有什么区别

我很难看到RxJs中switchLatest和flatmapLatest之间的区别,其中一个区别是嵌套的可观察事件,就像scala中的事实一样,而另一个则相当于在返回新的flattened集合之前执行它?

我错过了什么.

javascript scala reactive-programming reactive-extensions-js rxjs

0
推荐指数
1
解决办法
1536
查看次数