gpt4 book ai didi

javascript - 从一个对象订阅多个事件的 RxJs 最佳实践

转载 作者:行者123 更新时间:2023-11-29 21:05:12 25 4
gpt4 key购买 nike

我是 RxJs 的新手,我有一个对象应该是可观察的:其他代码需要能够监听此对象可以发出的几个自定义事件。例如,如果我有这个:

class MyObject {

constructor() {
this.arr = [];
}

addOne(value) {
this.arr.push(value);
// fire event ITEM_ADDED
}

removeLast() {
this.arr.splice(-1, 1);
// fire event ITEM_REMOVED
}
}

我想让其他代码做这样的事情:

const myObj = new MyObject();
myObj.on('ITEM_ADDED', () => console.log('item added!'));
myObj.on('ITEM_REMOVED', () => console.log('item removed!'));

我不知道在这个用例中使用 RxJs 还是自己实现一个可观察对象是否有意义(就像我在使用 RxJs 之前所做的那样)。我试图让 MyObject 扩展 Observable 但我没有找到触发事件的方法。

最佳答案

一种方法是使用主题,例如。

class MyObject {
eventStream = new Rx.Subject();
constructor() {
this.arr = [];
}

addOne(value) {
this.arr.push(value);
this.eventStream.next('ITEM_ADDED')
}

removeLast() {
this.arr.splice(-1, 1);
this.eventStream.next('ITEM_REMOVED')
}
}

myObject.eventStream
.filter(event => event === 'ITEM_ADDED')
.subscribe(() => console.log('Item added'))

myObject.eventStream
.filter(event => event === 'ITEM_REMOVED')
.subscribe(() => console.log('Item removed'))

关于javascript - 从一个对象订阅多个事件的 RxJs 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44443510/

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