如何解决IBM内容导航器-等待服务回调返回值以在全局操作中影响isVisible
我使用服务从服务器端获取当前用户广告列表,
我在全局工具栏上创建了一个新的操作,如果用户不属于相关广告,我试图隐藏该操作,
我正在使用Action isVisible()函数,但是我无法使isVisible()等到返回服务答案后,我在做什么错了?
define([ "dojo/_base/declare","dojo/_base/lang","ecm/model/Request","ecm/model/Action","ecm/widget/dialog/AddContentItemDialog"],function(declare,lang,Request,Action,AddContentItemDialog) {
return declare("OpenEntryTemplatePluginDojo.OpenMyEntryTemplateAction",[ Action ],{
isUserBelogToSpecificADgroup:null,isVisible:function(repository,listType){
if(!this.isUserBelogToSpecificADgroup){
Request.invokePluginService("OpenEntryTemplatePlugin","CheckIfCurrentUserHaveSpecificADgroupService",{//to know if the user is belong to the relevant AD group
requestCompleteCallback : dojo.hitch(this,function(response) {
if(response.success) {return response.success;}
else {
this.isUserBelogToSpecificADgroup = false;
return this.isUserBelogToSpecificADgroup ;
}
})
});
}else{
return false;
}
},```
解决方法
方法invokePluginService()
是异步的,不会等待请求完成。可以使用同步方法invokePluginServiceSynchronous()
代替此方法。这将等待请求完成并直接返回响应:
var response = Request.invokePluginServiceSynchronous("OpenEntryTemplatePlugin","CheckIfCurrentUserHaveSpecificADgroupService",{} );
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。