标签: reactive

SwiftUI/Combine:监听数组项值变化

我想显示多个文本字段,代表比赛每个部分的分数。

示例:对于排球比赛,我们有 25/20、25/22、25/23。总体得分为 3/0。

全局组件架构:

>> ParentComponent
    >> MainComponent
        >> X TextFieldsComponent (2 text fields, home/visitor score)
Run Code Online (Sandbox Code Playgroud)

最底层的组件 TextFieldsComponent 包含基本绑定:

struct TextFieldsComponent: View {
    @ObservedObject var model: Model

    class Model: ObservableObject, Identifiable, CustomStringConvertible {
        let id: String
        @Published var firstScore: String
        @Published var secondScore: String

        var description: String {
            "\(firstScore) \(secondScore)"
        }

        init(id: String, firstScore: String = .empty, secondScore: String = .empty) {
            self.id = id
            self.firstScore = firstScore
            self.secondScore = secondScore
        }
    }

    var body: some View {
        HStack …
Run Code Online (Sandbox Code Playgroud)

swift reactive swiftui combine

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

Quarkus Hibernate 反应式 mysql

我正在尝试使用 Reactive jackson hibernate panache mysql 作为数据库构建一个小型应用程序。

我收到以下错误。

"stackTrace": "java.lang.IllegalStateException: 没有为持久单元默认反应定义池\n\tat io.quarkus.hibernate.reactive.runtime.FastBootHibernateReactivePersistenceProvider.registerVertxAndPool(FastBootHibernateReactivePersistenceProvider.java:233)\n\tat io.quarkus.hibernate.reactive.runtime.FastBootHibernateReactivePersistenceProvider.rewireMetadataAndExtractServiceRegistry(FastBootHibernateReactivePersistenceProvider.java:180)\n\tat io.quarkus.hibernate.reactive.runtime.FastBootHibernateReactivePersistenceProvider.getEntityManagerFactoryBuilderOrNull(FastBootHibernateReactivePers) istenceProvider.java:156)\n\tat io。 quarkus.hibernate.reactive.runtime.FastBootHibernateReactivePersistenceProvider.createEntityManagerFactory(FastBootHibernateReactivePersistenceProvider.java:82)\n\tat javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:80)\n\tat javax.persistence.Persistence.createEntityManagerFactory(持久性。 java:55)\n\tat io.quarkus.hibernate.orm.runtime.JPAConfig$LazyPersistenceUnit.get(JPAConfig.java:118)\n\tat io.quarkus.hibernate.orm.runtime.JPAConfig.startAll(JPAConfig. java:42)\n\tat io.quarkus.hibernate.orm.runtime.JPAConfig_Subclass.startAll$$superaccessor5(JPAConfig_Subclass.zig:769)\n\tat io.quarkus.hibernate.orm.runtime.JPAConfig_Subclass$$function$ $5.apply(JPAConfig_Subclass$$function$$5.zig:29)\n\tat io.quarkus.arc.impl.AroundInvokeInitationContext.proceed(AroundInvokeInvocalContext.java:54)\n\tat io.quarkus.arc.runtime.devconsole .InvocalInterceptor.proceed(InvocalInterceptor.java:62)\n\tat io.quarkus.arc.runtime.devconsole.InvocalInterceptor.monitor(InitationInterceptor.java:51)\n\tat io.quarkus.arc.runtime.devconsole.InitationInterceptor_Bean .intercept(InvocalInterceptor_Bean.zig:521)\n\tat io.quarkus.arc.impl.InterceptorInvoke.invoke(InterceptorInitation.java:41)\n\tat io.quarkus.arc.impl.AroundInvokeInitationContext.perform(AroundInvokeInvocalContext.java :41)\n\tat io.quarkus.arc.impl.InitationContexts.performAroundInvoke(InitationContexts.java:32)\n\tat io.quarkus.hibernate.orm.runtime.JPAConfig_Subclass.startAll(JPAConfig_Subclass.zig:727)\ io.quarkus.hibernate.orm.runtime.HibernateOrmRecorder.startAllPersistenceUnits(HibernateOrmRecorder.java:88)\n\tat io.quarkus.deployment.steps.HibernateOrmProcessor$startPersistenceUnits951856026.deploy_0(HibernateOrmProcessor$startPersistenceUnits95185 6026.zig:74)\ io.quarkus.deployment.steps.HibernateOrmProcessor$startPersistenceUnits951856026.deploy(HibernateOrmProcessor$startPersistenceUnits951856026.zig:40)\n\tat io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:751)\n\tat io .quarkus.runtime.Application.start(Application.java:90)\n\tat io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:100)\n\tat io.quarkus.runtime.Quarkus.run(Quarkus .java:66)\n\tat io.quarkus.runtime.Quarkus.run(Quarkus.java:42)\n\tat io.quarkus.runtime.Quarkus.run(Quarkus.java:119)\n\tat io.quarkus.runner.GenerateMain.main(GenerateMain.zig:29)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法)\n\tat java .base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base /java.lang.reflect.Method.invoke(Method.java:567)\n\tat io.quarkus.runner.bootstrap.StartupActionImpl$3.run(StartupActionImpl.java:134)\n\tat java.base/java. lang.Thread.run(Thread.java:831)\n"

知道缺少什么吗?

我有模型

@Entity
public class Nation extends PanacheEntity {

    @Column
    public String country;

    public Nation(String country, List<State> states) {
        this.country = …
Run Code Online (Sandbox Code Playgroud)

java reactive quarkus quarkus-panache hibernate-reactive

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

如何在 R 闪亮下载处理程序中将用户输入传递给文件名

这是How to pass a reactiveplot generated in Shiny to Rmarkdown to generateddynamic reports的后续问题

我试图将用户输入传递给textInputfilename参数downloadhandler

这个概念通常有效,但在这种情况下,这段代码不起作用:

本质上我想改变

filename = "report.html",

filename = paste0("my_new_name", input$text,"-" ,Sys.Date(), ".html"),

这是代码:

library(shiny)
library(radarchart)

shinyApp(
  ui = fluidPage(
    sliderInput("slider", "Slider", 1, 100, 50),
    textInput("text", "text"),
    downloadButton("report", "Generate report")
  ),
  server <- function(input, output) {
    output$plot1 <- renderChartJSRadar({
      chartJSRadar(skills[, c("Label", input$selectedPeople)], 
                   maxScale = 10, showToolTipLabel=TRUE) 
    })
    
    output$report <- downloadHandler(
      #filename = "report.html",
      filename = paste0("my_new_name", input$text,"-" ,Sys.Date(), ".html"),
      content …
Run Code Online (Sandbox Code Playgroud)

filenames r download shiny reactive

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

在Spring Data上订阅两次MongoDB save()会导致双重插入

我们遇到了以下我们理解的行为,但是我们想知道它是否是预期的,以及将它记录为某种陷阱可能是有意义的.

我们正在试验Spring Boot 2/Spring WebFlux并设置一个基本上有这样的东西的小应用程序(全部缩短):

@PostMapping
public Mono<Todo> addTodos( @RequestBody Person person ) {
    return personService.addPerson( person );
}
Run Code Online (Sandbox Code Playgroud)

该服务首先看起来像这样,因为我们想要将一个人的事件也发布到消息队列:

public class PersonService {
    public Mono<Person> addPerson( Person person ) {
        Mono<Person> addedPerson = personRepository.save( person );
        addedPerson.subscribe( p -> rabbitTemplate.convertAndSend( "persons", p ) );
        return addedPerson;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,这样做显然是错误的.该.subscribe()触发器的流动和我们假设反应REST控制器确实在背景相同的序列化的数据的响应,从而导致第二平行流动之前.最后,我们最终persons在数据库中的集合中有两个重复的条目.

在这个冗长的介绍之后,最后的问题是:这是多个订阅者触发多个插入的预期行为(基本上,如果您订阅n时间,您会获得n插入)?

如果是的话,这对于初学者来说可能是一个陷阱,特别是如果我们的理解是正确的,那么反应式REST控制器就会发挥作用.subscribe().

spring spring-mvc spring-data-mongodb project-reactor reactive

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

将数组映射到TypeScript中的另一个数组

我可以改善我的代码,并用array.map代替for-loop吗?

我搜索了一下,我想我可以这样做,但是我没有找到如何应用的方法。

这是我发现的

var result = arr.map(person => ({ value: person.id, text: person.name }));
Run Code Online (Sandbox Code Playgroud)

我的代码在这里:

  public getFlights(): Observable<RowItem[]> {
    return this.http
      .get(this.apiHostFlights)
      .map((res: any) => {
        return <LocationModelItem[]>res.json();
      })
      .map((items: LocationModelItem[]) => {
        var rowItems: RowItem[]=[];
        var cachedLenght = items.length;
        for (var i = 0; i < cachedLenght; i++) {
          rowItems.push(
            new RowItem(i, items[i].name, items[i].img, items[i].category)
          );
        }
        return rowItems;
      })
      .catch((error: any) => {
        return Observable.throw(error.statusText);
      });
  }
Run Code Online (Sandbox Code Playgroud)

reactive

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

带有 Room 错误处理的 RxJava2 - 数据库主线程异常

我正在尝试从远程源检索项目,如果这不起作用(没有互联网),我想从房间数据库中检索缓存的项目。我为发生错误时创建了一个新单曲,并指定了它应该订阅和观察的线程。我仍然是这个例外:

java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time.
Run Code Online (Sandbox Code Playgroud)

这是检索项目的方法:

public LiveData<List<Article>> getNewsArticles() {
    return LiveDataReactiveStreams.fromPublisher(
            newsService.getNewsArticles()
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())

                    .onErrorResumeNext(throwable ->
                            Single.just(newsDao.findAllForNumber(AMOUNT_OF_ARTICLES_PER_PAGE))
                                    .subscribeOn(Schedulers.io())
                                    .observeOn(AndroidSchedulers.mainThread()))

                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())

                    .doOnSuccess(newsArticles -> Completable.fromAction(() ->
                            newsDao.insertAll(newsArticles))
                            .subscribeOn(Schedulers.io()))
                    .toFlowable());
}
Run Code Online (Sandbox Code Playgroud)

LiveDataReactiveStreams 将其转换为 livedata 对象并处理订阅,所以我的视图只知道 livedata。

我似乎无法让 onErrorResumeNext 调用在后台线程上工作。

任何帮助将不胜感激!

回答

我最终用以下代码解决了这个问题:

public LiveData<List<Article>> getNewsArticles() {
    return LiveDataReactiveStreams.fromPublisher(
            newsService.getNewsArticles()
                    .observeOn(Schedulers.io())
                    .doOnSuccess(newsArticles -> newsDao.insertAll(newsArticles))
                    .onErrorResumeNext(throwable -> Single.fromCallable(() -> newsDao.findAllForNumber(AMOUNT_OF_ARTICLES_PER_PAGE)))
                    .toFlowable());
}
Run Code Online (Sandbox Code Playgroud)

database error-handling android reactive

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

Vue数据属性不起作用

考虑以下代码,我无法使activedata属性具有反应性。在这种情况下,我只想在图像上的鼠标悬停时显示div。

<template>
    <div>
        <img @mouseover="showInfo" class="cursor-pointer w-full" :src="project.images[0].url" width="100%">
        <div v-show="active" class="bg-red h-12">
            Info about the image
        </div>
    </div>    
</template>

<script>
    export default {
        props: ['project'],
        data: function () {
            return {
                active: false
            }
        },
        methods: {
            showInfo: () => {
                this.active = !this.active;
            }
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

我尝试使用v-if代替和打印,active但没有效果。我究竟做错了什么?

vue.js reactive

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

闪亮 R 中的反应条形图

我正在尝试在闪亮的应用程序中构建反应式条形图。我有一个名为 stats 的小表

Team      wins  loss  draws
Arsenal   533   120   256
Chelsea   489   201   153
Liverpool 584   186   246
Run Code Online (Sandbox Code Playgroud)

我想构建一个条形图,根据所选团队显示胜利、失败和平局。我无法为此创建反应性条形图。有人可以为此建议一个代码或指导我正确的方向吗?

r bar-chart shiny reactive

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

使用reactivex、kotlin-coroutines、akka-actors 等框架进行编程的权衡?

所有这些框架都在线程之上创建了另一个抽象级别。例如,由于调度的原因,使用 kotlin 协程似乎比纯线程需要更多的 CPU 周期。对于反应式,我们有同样的情况,额外的级别 - 更多的 CPU 周期。虽然我不知道 akka-actors。

即使使用更多的 CPU 周期来调度协程,我们仍然可以通过非阻塞方法获得性能提升。

有人可以详细解释这些收益(或者这是一种权衡吗?),重点关注硬件和操作系统级别?也许在什么情况下我们想要使用协程或reactivex,而当我们因为某些原因不想使用它们时?

multithreading jvm akka reactive kotlin-coroutines

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

Mono.defualtEmpty() 与 Mono.switchIfEmpty()

当上游发出 nullValue 时,我们可以使用 'Mono.defualtIfEmpty()' 或 'Mono.switchIfEmpty()' 来替换 null 值。

switchIfEmpty()评价上游价值急切。因此我们使用 Mono.defer() 进行惰性求值。

  1. 'Mono.defualtIfEmpty()' 也是急于求值吗?像 switchIfEmpty() 一样?

  2. 如何更改 Mono.defualtIfEmpty() 来进行惰性评估?

reactive-programming project-reactor reactive spring-webflux

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

Rx Swift语法混乱

我正在阅读raywenderlich的Rx-Reactive编程书籍,并对Rx Swift的这种语法感到困惑:

extension PHPhotoLibrary {
    static var authorized: Observable<Bool> {
        return Observable.create({ observer in
            DispatchQueue.main.async {
                if authorizationStatus() == .authorized {
                    observer.onNext(true)
                    observer.onCompleted()
                } else {
                    observer.onNext(false)
                    requestAuthorization({ newStatus in
                        observer.onNext(newStatus == .authorized)
                        observer.onCompleted()
                    })
                }
            }

            return Disposables.create()
        })
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么代码中有两个return语句?有人可以解释一下为什么我们在代码中需要2个return语句吗?

ios swift rx-swift reactive

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

RxJava2 switchIfEmpty并验证执行

所以..想象我有一个像这样的方法构造:

LocalDatabase:

public Observable<PoiObject> getPoiObject() {

    return Observable.defer {
        PoiObject object = poiDao.getPoiObject();
        if(object == null) {
            return Observable.empty();
        }
        else {
            return Observable.just(object);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我在其他地方有另一种方法,如下所示:

服务:

public Observable<PoiObject> getPoiObject() {
    return localDatabase.getPoiObject()
}

public Observable<PoiObject> getItFromWeb() {
    return restService.getObject()
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试将Service :: getPoiObject的调用链接到这样的Rx调用:

用例:

public Observable<SomeVM> getObject() {
    return service.getPoiObject()
        .switchIfEmpty(service.getItFromWeb())
}
Run Code Online (Sandbox Code Playgroud)

然后以下单元测试失败:

@Test
public void test_getObject() {
    Service service = mock()

    when(service.getPoiObject()).thenReturn(any());

    Observable<SomeVM> observable = usecase.getObject();
    verify(service).getPoiObject();
    verify(service, times(0)).getItFromWeb();
}
Run Code Online (Sandbox Code Playgroud)

为什么getItFromWeb()在清楚地执行时,前一个调用不为空(从service.getPoiObject()调用返回对象).是否还有其他策略可以测试switchIfEmpty?

android reactive-programming kotlin reactive rx-java2

-2
推荐指数
1
解决办法
1350
查看次数