簡體   English   中英

Flux 的 onComplete 執行后如何返回 Mono?

[英]How do I return a Mono after Flux's onComplete is executed?

我正在嘗試保存一組類別。 保存所有類別后,將產品類別設置為它。 然后返回產品。 到目前為止,我已經成功地做到了這一點。

public Mono<Product> save(Product product) {
    final Set<Category> categories = product.getCategories();
    Set<Category> _categorySet = new HashSet<>();
    Mono<Product> _product;
    for (Category category : categories) {
        final Mono<Category> save = categoryService.save(category);
        save.subscribe(_categorySet::add,null,()->{
            product.setCategories(_categorySet);
            repository.save(product);
        });
    }
}

保存后如何在不依賴block()的情況下退回產品? 我似乎找不到學習這些東西的來源。 誰能指點我的好材料。

不要手動阻止 webflux 鏈。 嘗試使用此代碼。

public Mono<Product> save(Product product) {

    final Set<Category> categories = product.getCategories();
    return Flux.fromIterable(categories)
            .flatMap(categoryService::save)
            .collect(Collectors.toSet())
            .flatMap(categorySet -> { // use `flatMap` if repository.save(product); returns `Mono<Product>`. or else use `map` if repository.save(product); returns `Product`
                product.setCategories(categorySet);
                return repository.save(product);
            });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM