提问者:小点点

反应式编程


我想从Mono中提取对象,然后使用该对象进行其他数据库操作,如何在不使用block()的情况下做到这一点?

像下面这样

  Mono<TemplateBo> templateBoMono = 
  templateRepository.findActiveTemplate(tenantId);

    TemplateBo templateBo=
    templateBoMono.flatMap(bo -> {
        bo.setStatus(TemplateStatusEnum.DEACTIVATED);
        return Mono.just(bo);
    }).flatMap(templateRepository::updateTemplate).block();

    templateVersionRepository.findPublishedByTemplateId(templateBo.getId()).flatMap(version -> {
        version.setStatus(TemplateVersionStatusEnum.MODIFIED);
        return Mono.just(version);
    }).flatMap(templateVersionRepository::updateVersion).subscribe();

我想同时执行这两个操作。


共1个答案

匿名用户

只需删除块()并继续平面图您的发布者

    templateRepository.findActiveTemplate(tenantId)
            .flatMap(bo -> {
                bo.setStatus(TemplateStatusEnum.DEACTIVATED);
                return Mono.just(bo);
            })
            .flatMap(templateRepository::updateTemplate)
            .flatMap(templateBo -> templateVersionRepository.findPublishedByTemplateId(templateBo.getId())
                    .flatMap(version -> {
                        version.setStatus(TemplateVersionStatusEnum.MODIFIED);
                        return Mono.just(version);
                    })
                    .flatMap(templateVersionRepository::updateVersion))
            .subscribe()