延迟在Model View Update上成功回调

2020-09-10 15:39发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在执行更新操作,成功之后,我将隐藏我的按钮。 但是发生了一个问题,变量chkupdate在回调成功内部,但是在调试浏览器上,我看到运行时顺序为:

1)更新命令
2)IF命令
3)回调成功函数

为什么会这样? 为什么会延迟进入回调函数? 我如何等待回调返回并仅在进入IF情况之后??

关注我的代码:

oModel.update("/img/Z_SFLIGHT_CRUD(Carrid ='" + oArgs.AirlineCode +"',Connid ='" + oArgs.Flight +"',Fldate = datetime'" + dateFormatted +"')" ,oObject,
{成功:函数(oData,oResponse){ Toast.show(" Reserved",{持续时间:1500});
sap.ui.getCore()。chkupdate =" X" ;
},错误:function(){}
});

如果(sap.ui.getCore()。chkupdate ===" X")
{
this.UpdateControls();
oModel.refresh();
}

最好的问候,

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在执行更新操作,成功之后,我将隐藏我的按钮。 但是发生了一个问题,变量chkupdate在回调成功内部,但是在调试浏览器上,我看到运行时顺序为:

1)更新命令
2)IF命令
3)回调成功函数

为什么会这样? 为什么会延迟进入回调函数? 我如何等待回调返回并仅在进入IF情况之后??

关注我的代码:

oModel.update("/img/Z_SFLIGHT_CRUD(Carrid ='" + oArgs.AirlineCode +"',Connid ='" + oArgs.Flight +"',Fldate = datetime'" + dateFormatted +"')" ,oObject,
{成功:函数(oData,oResponse){ Toast.show(" Reserved",{持续时间:1500});
sap.ui.getCore()。chkupdate =" X" ;
},错误:function(){}
});

如果(sap.ui.getCore()。chkupdate ===" X")
{
this.UpdateControls();
oModel.refresh();
}

最好的问候,

付费偷看设置
发送
4条回答
My梦
1楼 · 2020-09-10 15:57.采纳回答

您好 Felipe Gueiros

这称为异步处理。 如果您了解更多信息,它将非常漂亮。 只是google承诺使用javascript进行异步处理,有很多资料。

对于您的问题,我认为您必须使用V2模型,并且它是异步的。 V1 odata模型具有同步性,但现在已过时。

在您的情况下,成功处理请求后,异步调用成功处理程序函数,因此与此方法执行之后的所有代码都将被执行。

那么如何解决您的问题?

只需在成功函数处理程序中编写的代码即可编写代码。 但请确保您的函数处理程序采用以下格式

成功:function(){
//在此处刷新控件的地方编写所有代码
 this.UpdateControls();
 oModel.refresh();
 } .bind(this)//这是将控制器范围传递给事件处理程序时必需的

BR <,

Mahesh

悻福寶寶
2楼-- · 2020-09-10 15:50

I

Alawn_Xu
3楼-- · 2020-09-10 15:51

嗨,Mahesh,

您解决了我的问题!

我了解异步处理的概念,但是 我认为在此解决方案中,因为我的外部函数未在成功函数内部读取。

但是有了附加的bind(this),情况发生了变化!

非常感谢!

BR,

Felipe

xfwsx85
4楼-- · 2020-09-10 15:44

太好了!您可以通过将答案标记为接受来结束该问题。

一周热门 更多>