GWT中的同步回调函数出现问题
我正在做的是:GWT中的同步回调函数出现问题,gwt,jakarta-ee,functional-programming,gwt-rpc,Gwt,Jakarta Ee,Functional Programming,Gwt Rpc,我正在做的是: getSecroleByOrgNID(orgList[i-2],cu.currentUser.getProfileObj()); System.out.println("Value of sec role is "+ secondryRole); 其中getSecroleByOrgNID函数为: private String getSecroleByOrgNID(COrganization srOrg, CProfile srUser) { analyticsSrvc.
getSecroleByOrgNID(orgList[i-2],cu.currentUser.getProfileObj());
System.out.println("Value of sec role is "+ secondryRole);
其中getSecroleByOrgNID
函数为:
private String getSecroleByOrgNID(COrganization srOrg, CProfile srUser) {
analyticsSrvc.getSecroleByOrgNID(srOrg, srUser,
new AsyncCallback<String>() {
@Override
public void onFailure(Throwable caught) {
}
@Override
public void onSuccess(String result) {
secondryRole = result;
System.out.println("Assigned role is " + secondryRole);
}
});
return null;
}
输出为:
Value of sec role is
Assigned role is Admin
查询是为什么sec role的“值是”
语句打印在“分配的角色是管理员”
之前,因为函数是在的打印语句之前调用的。sec role的值是“
。
为什么secondryRole的值即使在函数中被重新分配,仍然保持为“”。正如GWT文档所说,在GWT中,您必须“接受异步事务”,而忘记同步事务 问题是getSecroleByOrgNID()调用了对服务器的异步调用,但该调用不会停止执行,因此它会继续他的工作(服务器需要更多的时间返回)。当服务器尚未响应时,您正在请求secondryRole
您应该在onSuccess()中调用一个方法,该方法与服务器响应一起工作。正如GWT文档所说,在GWT中,您必须“接受异步事务”,而忘记同步事务 问题是getSecroleByOrgNID()调用了对服务器的异步调用,但该调用不会停止执行,因此它会继续他的工作(服务器需要更多的时间返回)。当服务器尚未响应时,您正在请求secondryRole 您应该在onSuccess()中调用一个方法,该方法可以处理服务器响应
Value of sec role is
Assigned role is Admin