今天测试一下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
此外,建议单步调试一下源码,源码很少,一会就弄明白了