标签: reactive-programming

RxJava:如何用依赖关系组合多个Observable并在最后收集所有结果?

我正在学习RxJava,并且,作为我的第一个实验,尝试在此代码中的第一个run()方法中重写代码(在Netflix的博客中引用,作为RxJava可以帮助解决的问题)使用RxJava改进其异步性,即它不会f1.get()在继续执行其余代码之前,请等待第一个Future()的结果.

f3取决于f1.我看到如何处理这个,flatMap似乎做了诀窍:

Observable<String> f3Observable = Observable.from(executor.submit(new CallToRemoteServiceA()))
    .flatMap(new Func1<String, Observable<String>>() {
        @Override
        public Observable<String> call(String s) {
            return Observable.from(executor.submit(new CallToRemoteServiceC(s)));
        }
    });
Run Code Online (Sandbox Code Playgroud)

接下来,f4f5依靠f2.我有这个:

final Observable<Integer> f4And5Observable = Observable.from(executor.submit(new CallToRemoteServiceB()))
    .flatMap(new Func1<Integer, Observable<Integer>>() {
        @Override
        public Observable<Integer> call(Integer i) {
            Observable<Integer> f4Observable = Observable.from(executor.submit(new CallToRemoteServiceD(i)));
            Observable<Integer> f5Observable = Observable.from(executor.submit(new CallToRemoteServiceE(i)));
            return Observable.merge(f4Observable, f5Observable);
        }
    });
Run Code Online (Sandbox Code Playgroud)

这开始变得奇怪(merge他们可能不是我想要的......)但是允许我在最后这样做,而不是我想要的:

f3Observable.subscribe(new Action1<String>() {
    @Override …
Run Code Online (Sandbox Code Playgroud)

java functional-programming reactive-programming rx-java

20
推荐指数
2
解决办法
3万
查看次数

RxSwift如何使用combineLatest?

我已经定义:

let currentHours:Variable<Float> = Variable(0.0)
let currentRate:Variable<Float>  = Variable(0.0)
Run Code Online (Sandbox Code Playgroud)

我想用combineLatest制作一个Observable来总结这两个值:

Observable.combineLatest(currentHours, currentRate, { (h, r) -> Float in
    return Float(h+r)
})
Run Code Online (Sandbox Code Playgroud)

我也尝试:

let c =  Observable.combineLatest(currentHours, currentRate) { $0 + $1 }
Run Code Online (Sandbox Code Playgroud)

我总是遇到编译错误.谢谢

reactive-programming observable ios swift

20
推荐指数
1
解决办法
2万
查看次数

rxjs中Observable和Subject之间有什么区别?

我正在浏览这个博客并阅读有关Observables的内容,我无法弄清楚Observable与Subject之间的区别

javascript reactive-programming rxjs angular

20
推荐指数
10
解决办法
8733
查看次数

FSharp中的事件和可观察事件

是否相同/更好地工作

在功能上看起来是等价的,我猜不同之处在于"语义":

  • 我们是否在有权访问事件内部状态的边界内?
  • 或者我们是否将此事件接口视为流向我们公开的被动源

这是正确的想法吗?

events f# reactive-programming observable

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

非闪亮上下文中的反应对象绑定

实际问题

你怎么能接近由闪亮函数建立的反应环境/行为,或者甚至可能在非闪亮的上下文中使用这些函数来创建"反应"变量?

背景

我对闪亮的框架及其底层范例非常着迷.特别是关于已建立的整体反应环境.只是为了它的纯粹乐趣,我想知道是否可以将这种反应式编程范式转换为非闪亮的上下文 - 即常规的R应用程序/项目/包或者你想要调用它.

也许思考选项:您可能希望option_2依赖于值option_1来确保一致的数据状态.如果option_1改变,也option_2应该改变.

我想我正在寻找尽可能高效的东西,即option_2应该只在必要更新,即option_1实际更改时(与计算option_2 每次查询选项的当前状态相反).

尽职调查

我用以下功能玩了一下:

  • shiny::reactiveValues
  • shiny::reactive
  • shiny::observe
  • shiny::isolate

但是AFAIU,当然,它们与闪亮的环境紧密相关.

自己的原型

这是一个基于environments 的非常简单的解决方案.它有效,但是

  1. 我会对不同/更好的方法感兴趣
  2. 我想也许有人可能会以某种方式重复使用闪亮的代码.

set功能定义:

setValue <- function(
  id,
  value,
  envir,
  observe = NULL,
  binding = NULL,
  ...
) {

  ## Auxiliary environments //
  if (!exists(".bindings", envir, inherits = FALSE)) { …
Run Code Online (Sandbox Code Playgroud)

r reactive-programming shiny

19
推荐指数
2
解决办法
1315
查看次数

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

RxJava:d​​oOnError('callback')和subscribe(*,'callback')中的回调有什么区别

在我的上一个项目中,我使用rxJava并且我意识到observable.doOnError('onErrorCallback').subscribe(action)observable.subscribe(action, 'onErrorCallback')以不同的方式运行.即使是从文档中我也不明白它们之间的区别是什么,以及何时应该使用第一个和第二个变体.

java reactive-programming rx-java

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

如何通过改造和rxjava取消任务

我有休息api.

@Get("/serveraction")
public Observable<String> myRequest(@Query("Data") String data);
Run Code Online (Sandbox Code Playgroud)

我知道,okhttp已取消功能(通过请求对象,按标签),但不知道如何使用它与改造和rxjava.使用改造和rxjava实现网络任务取消机制的最佳方法是什么?

reactive-programming rx-java retrofit okhttp

19
推荐指数
2
解决办法
9097
查看次数

如何在Javascript中实现Haskell的FRP行为类型?

我想了解Haskell中功能反应式编程的原始含义,以及它与Javascript中FRP的实际应用有何不同.不幸的是,我对Haskell只有肤浅的理解,必须坚持使用Javascript.

这是我尝试Behavior用无类型语言实现Haskell的数据类型:

// behavior :: String -> DOMHTMLElement -> a -> (a -> Event -> a) -> (a -> b)

const behavior = type => target => x => f => {
  const destructiveSet = y => (x = f(x) (y), x), // A
   handler = event => destructiveSet(event);

  target.addEventListener(type, handler, true);
  return g => g(x);
};
Run Code Online (Sandbox Code Playgroud)

A是必要的,因为我必须改变x由调用堆栈保存的初始值.函数体从左到右进行求值,并返回逗号运算符的最后一个操作数的值,,即破坏性更新的版本x.

target.addEventListener 只是将给定的处理程序订阅给给定的DOM HTML元素.

behavior返回一个启用只读访问权限的函数x.

此实现在Javascript中引入了只读抽象数据类型,其值仅存在于高阶函数的调用堆栈中.如果DOM事件仅由GUI用户触发,则程序无法改变类型的值behavior.它只能轮询它们以观察时变效应.

这种方法与Haskell的远程可比Behavior …

javascript haskell functional-programming frp reactive-programming

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

ReactiveX被认为是反应式编程吗?

来自ReactiveX介绍页面:

它有时被称为"功能反应式编程",但这是用词不当.ReactiveX可能是功能性的,它可能是反应性的,但"功能反应性编程" 是一种不同的动物.一个主要的不同点是功能性反应式编程对随时间连续变化的值进行操作,而ReactiveX对随时间发射的离散值进行操作.

同时,从Wikipedia的Functional Reactive Programming页面,ReactiveX列在"实现"部分:

实现[编辑]

  • cellx,超快速实现javascript的反应性
  • Elm,编译为HTML,CSS和JavaScript的FRP语言
  • Ruby中的Frappuccino FRP实现
  • Flapjax,JavaScript中的行为/事件FRP实现
  • Reactive.jl,Julia中的FRP实现
  • ReactiveX,多种语言的FRP实现,包括Java,JavaScript,Python,Swift等等
  • Haskell中的reactive-banana FRP实现
  • ReactiveCocoa FRP在Swift和Objective-C中实现
  • ReactiveKit FRP在纯Swift中实现
  • Haskell中的Reflex FRP实现
  • Scala(和Scala.js)中的Scala.Rx FRP实现
  • 在C#,C++,Haskell(不推荐使用[12]),Java,> Rust和Scala中使用Sodium,FRP实现
  • Haskell中的Yampa FRP实现

我非常了解ReactiveX的作用,并对"反应式编程"和"功能反应式编程"进行了一些研究,但我仍无法区分它们之间的关系.

事实上,我有点认为维基百科页面用词不当或错误地列出了"实现"部分中的示例,因为我知道cellxReactiveX(在示例中都列出了它们)是为了解决完全不同的问题而构建的.

frp reactive-programming reactivex

18
推荐指数
2
解决办法
1999
查看次数