Questions tagged «reactive-programming»

响应式编程是一种围绕数据流和变更传播的编程范例。

1
RxJS中的链接可观察对象
我正在学习RxJS和Angular2。比方说,我有一个带有多个异步函数调用的promise链,这取决于前一个的结果,如下所示: var promiseChain = new Promise((resolve, reject) => { setTimeout(() => { resolve(1); }, 1000); }).then((result) => { console.log(result); return new Promise((resolve, reject) => { setTimeout(() => { resolve(result + 2); }, 1000); }); }).then((result) => { console.log(result); return new Promise((resolve, reject) => { setTimeout(() => { resolve(result + 3); …

4
冷热观测:是否存在“热”和“冷”运算符?
我回顾了以下SO问题: 什么是冷热观测? 总结一下: 当一个冷的可观察对象有一个观察者来消耗它们时,它会发出它的值,即观察者接收到的值的顺序与订阅时间无关。所有观察者将使用相同的值序列。 一个热的可观察对象发出的值与其订阅无关,即观察者收到的值是订阅时间的函数。 但是,我觉得热还是冷仍然是造成混乱的根源。所以这是我的问题: 默认情况下,所有rx观测值是否都是冷的(主题除外)? 我经常读到事件是热可观察物的典型隐喻,但我也读到它Rx.fromEvent(input, 'click')是冷可观察物(?)。 是否有Rx运算符将冷的可观察物转换为热的可观察物(publish和share除外)? 例如,它如何与Rx运算符一起使用withLatestFrom?让我们cold$在某处订阅一个冷的观察。会sth$.withLatestFrom(cold$,...)很热吗? 或者,如果我sth1$.withLatestFrom(cold$,...), sth2$.withLatestFrom(cold$,...)同时订阅sth1和sth2,那么我是否总是会看到相同的值sth? 我以为Rx.fromEvent可以创建冷的可观察物,但事实并非如此,如答案之一所述。但是,我仍然对这种行为感到困惑:https : //codepen.io/anon/pen/NqQMJR? editors =101。不同的订阅从相同的可观察值中获得不同的值。不是click事件共享?

2
何时应针对特定副作用创建新的订阅?
上周,我回答了一个RxJS 问题,在那里我与另一位社区成员进行了讨论:“我应该为每种特定的副作用创建订阅,还是应该总体上减少订阅?” 我想知道在完整的反应式应用方法中使用什么方法,或者何时从一种方法切换到另一种方法。这将帮助我甚至其他人避免不必要的讨论。 设置信息 所有示例均在TypeScript中 为了更好地关注问题,不使用生命周期/构造函数进行订阅并保持框架无关 想象一下:在构造函数/生命周期init中添加了订阅 想象一下:取消订阅是在生命周期中完成的 什么是副作用(角度样本) 用户界面中的更新/输入(例如value$ | async) 组件的输出/上游(例如@Output event = event$) 不同层次结构上不同服务之间的交互 示例用例: 两个功能: foo: () => void; bar: (arg: any) => void 两个源可观察到的: http$: Observable<any>; click$: Observable<void> foohttp$发出后调用,不需要任何值 bar在click$发出后被调用,但需要的当前值http$ 案例:为每种特定副作用创建订阅 const foo$ = http$.pipe( mapTo(void 0) ); const bar$ = http$.pipe( switchMap(httpValue => click$.pipe( …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.