文章0 | 阅读 9578 | 点赞0
Reactor中有两种Publisher:Flux和Mono,其中Flux用来表示0N个元素的异步序列,Mono用来表示01个元素的异步序列,相对于Flux而言Mono更简单一些。
reactor中的mono可以通过一些方法创建,常用方法如下:
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.time.Duration;
import java.util.Date;
import java.util.concurrent.CompletableFuture;
/**
* @author: ffzs
* @Date: 2020/8/5 下午3:57
*/
@Slf4j
public class MonoTest {
@Test
public void mono() {
// 通过just直接赋值
Mono.just("my name is ffzs").subscribe(log::info);
// empty 创建空mono
Mono.empty().subscribe();
// 延迟生成0
Mono.delay(Duration.ofMillis(2)).map(String::valueOf).subscribe(log::info);
// 通过Callable
Mono.fromCallable(() -> "callback function").subscribe(log::info);
// future
Mono.fromFuture(CompletableFuture.completedFuture("from future")).subscribe(log::info);
// 通过runnable
Mono<Void> runnableMono = Mono.fromRunnable(() -> log.warn(Thread.currentThread().getName()));
runnableMono.subscribe();
// 通过使用 Supplier
Mono.fromSupplier(() -> new Date().toString()).subscribe(log::info);
// flux中
Mono.from(Flux.just("from", "flux")).subscribe(log::info); // 只返回flux第一个
}
}
下面是运行结果:
expectNext
执行类似断言的功能@Test
public void StepVerifier () {
Mono<String> mono = Mono.just("ffzs").log();
StepVerifier.create(mono).expectNext("ff").verifyComplete();
}
如果next断言不符合实际情况,就会报错:
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://fanfanzhisu.blog.csdn.net/article/details/107820131
内容来源于网络,如有侵权,请联系作者删除!