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",{} );

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...