OData create()导致应用挂起

2020-08-15 12:19发布

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

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


oModel.create()函数使整个应用程序挂起,直到完成为止。 我无法使用任何繁忙的指示器向用户显示正在发生的事情,因为挂起会停止执行任何其他操作。 无论是true还是false,create()函数调用中的async标志都不会对其造成影响。

有人知道这是否可以解决吗? 谢谢。

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

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


oModel.create()函数使整个应用程序挂起,直到完成为止。 我无法使用任何繁忙的指示器向用户显示正在发生的事情,因为挂起会停止执行任何其他操作。 无论是true还是false,create()函数调用中的async标志都不会对其造成影响。

有人知道这是否可以解决吗? 谢谢。

付费偷看设置
发送
7条回答
SAP砖家
1楼 · 2020-08-15 13:13.采纳回答

我找到了解决方案。 问题的确确实是async为false,即使在函数调用中将参数设置为true也不将其设置为true。

对于其他任何有此问题的人,我发现的解决方案是将呼叫添加到批处理操作中,尽管只是一个请求。 默认情况下,批处理调用是异步的。

var oBusy = new sap.m.BusyDialog();

oBusy.open();

var aBatch = [];

//向阵列添加批处理操作

aBatch.push(oModel.createBatchOperation(sPath," POST",oDataToBeSent));

oModel.addBatchChangeOperations(aBatch);

oModel.submitBatch(

function(evt){//成功

oBusy.close();

sap.m.MessageToast.show("已保存。");

},

function(oError){//失败

//使用状态码执行某些操作,以更好地处理错误

oBusy.close();

sap.m.MessageToast.show("保存失败。");

console.log(oError);

}

);

旧消息:

我的代码如下:

在将表单数据传递到对象中之后,在onSave()函数中。

oModel.create(sPath,oDataToBeSent,null,

function(){

//成功

},

function(err){

console.log(err);

},

true//bAsync

);

我注意到请求标头仍然显示" async:false"。 这可能是我问题的根源吗?

能不能别闹
2楼-- · 2020-08-15 13:17

您可以发布代码吗? 在UI5中显示忙碌指示器的方式有多种,并且如何设置它可以完全区别于显示,只是短暂显示还是正确显示。

zhangjiyang1323
3楼-- · 2020-08-15 13:12

Mathew,最好的 您可以执行-发布代码。

这是我遵循的服务器调用模式,因此它们永远不会"冻结"屏幕

尝试

{

startBusyDialog();

callBackend({

succesfull:function()

{

stopBusyDialog()

reportSuccess()

},

错误:函数()

{

stopBusyDialog()

reportBusinessEror()

}

});

}

catch(err)

{

stopBusyDialog()

reportSystemError(err);

}

小c菟菟
4楼-- · 2020-08-15 12:54

可以查看"性能"选项卡以及跟踪。

在浏览器中,您可以打开develoerp工具(F12)并查看 网络流量的"网络"标签。

您也可以使用一个名为fiddler的工具,但是如果您知道如何在浏览器中使用开发人员工具,则可能不需要fiddler

风早神人
5楼-- · 2020-08-15 13:21

Hello Matthew,

在Chrome中测试该应用并使用开发者工具,时间轴是否显示任何线索,例如长时间运行的脚本?

类似地,尝试使用URL参数sap-ui-运行该应用 调试= true,然后检查控制台。

问候

Scott

N-Moskvin
6楼-- · 2020-08-15 13:00

Matthew,

您还可以查看 进入跟踪/日志文件。

您正在使用的HANA版本是什么? 您是从odata文件中调用存储的proc吗? 如果是这样,直接在sql控制台中执行该命令的时间是什么?

灬番茄
7楼-- · 2020-08-15 13:17

谢谢 Matthew Kennedy 分享解决方案。 它确实帮助我解决了相同的问题。

一周热门 更多>