今天测试一下event。
目的:在Controller中执行一段代码同时返回页面,场景类似于注册用户成功后去后台给用户生成初始的用户信息。做到在页面渲染和后台的代码异步进行,而不是所有后台代码按照代码顺序执行完才渲染页面。
测试代码:
前置操作:


新建Event:
public class testEvent {
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}新增监听类
import net.dreamlu.event.core.EventListener;
public class testEventListener {
@EventListener
public void listentTestEvent(testEvent te) {
for (int i=0; i<te.getId();i++) {
System.out.println("listentTestEvent打印i:" + i );
}
}在Controller中发送事件
testEvent te = new testEvent();
te.setId(10);
EventKit.post(te);
for (int j=0; j<te.getId();j++) {
System.out.println("Controller打印j:" + j +"Controller打印");
}
render("test.html");测试结果:

问题:所有的代码似乎依次执行了,并没有异步,尝试用sleep延迟listentTestEvent,结果Controller中的代码并没有执行,render也没有执行,页面在等待响应。。
是我理解或者是用法不对吗?
项目:JFinal-event
此外,建议单步调试一下源码,源码很少,一会就弄明白了