2020-08-15 12:19发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
oModel.create()函数使整个应用程序挂起,直到完成为止。 我无法使用任何繁忙的指示器向用户显示正在发生的事情,因为挂起会停止执行任何其他操作。 无论是true还是false,create()函数调用中的async标志都不会对其造成影响。
有人知道这是否可以解决吗? 谢谢。
我找到了解决方案。 问题的确确实是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){//失败
//使用状态码执行某些操作,以更好地处理错误
sap.m.MessageToast.show("保存失败。");
console.log(oError);
}
);
旧消息:
我的代码如下: 在将表单数据传递到对象中之后,在onSave()函数中。 oModel.create(sPath,oDataToBeSent,null, function(){ //成功 }, function(err){ console.log(err); }, true//bAsync ); 我注意到请求标头仍然显示" async:false"。 这可能是我问题的根源吗?
我的代码如下:
在将表单数据传递到对象中之后,在onSave()函数中。
oModel.create(sPath,oDataToBeSent,null,
function(){
//成功
function(err){
console.log(err);
true//bAsync
我注意到请求标头仍然显示" async:false"。 这可能是我问题的根源吗?
您可以发布代码吗? 在UI5中显示忙碌指示器的方式有多种,并且如何设置它可以完全区别于显示,只是短暂显示还是正确显示。
Mathew,最好的 您可以执行-发布代码。
这是我遵循的服务器调用模式,因此它们永远不会"冻结"屏幕
尝试
{
startBusyDialog();
callBackend({
succesfull:function()
stopBusyDialog()
reportSuccess()
错误:函数()
reportBusinessEror()
});
catch(err)
reportSystemError(err);
可以查看"性能"选项卡以及跟踪。
在浏览器中,您可以打开develoerp工具(F12)并查看 网络流量的"网络"标签。
您也可以使用一个名为fiddler的工具,但是如果您知道如何在浏览器中使用开发人员工具,则可能不需要fiddler
Hello Matthew,
在Chrome中测试该应用并使用开发者工具,时间轴是否显示任何线索,例如长时间运行的脚本?
类似地,尝试使用URL参数sap-ui-运行该应用 调试= true,然后检查控制台。
问候
Scott
Matthew,
您还可以查看 进入跟踪/日志文件。
您正在使用的HANA版本是什么? 您是从odata文件中调用存储的proc吗? 如果是这样,直接在sql控制台中执行该命令的时间是什么?
谢谢 Matthew Kennedy 分享解决方案。 它确实帮助我解决了相同的问题。
最多设置5个标签!
我找到了解决方案。 问题的确确实是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);
}
);
旧消息:
您可以发布代码吗? 在UI5中显示忙碌指示器的方式有多种,并且如何设置它可以完全区别于显示,只是短暂显示还是正确显示。
Mathew,最好的 您可以执行-发布代码。
这是我遵循的服务器调用模式,因此它们永远不会"冻结"屏幕
尝试
{
startBusyDialog();
callBackend({
succesfull:function()
{
stopBusyDialog()
reportSuccess()
},
错误:函数()
{
stopBusyDialog()
reportBusinessEror()
}
});
}
catch(err)
{
stopBusyDialog()
reportSystemError(err);
}
可以查看"性能"选项卡以及跟踪。
在浏览器中,您可以打开develoerp工具(F12)并查看 网络流量的"网络"标签。
您也可以使用一个名为fiddler的工具,但是如果您知道如何在浏览器中使用开发人员工具,则可能不需要fiddler
Hello Matthew,
在Chrome中测试该应用并使用开发者工具,时间轴是否显示任何线索,例如长时间运行的脚本?
类似地,尝试使用URL参数sap-ui-运行该应用 调试= true,然后检查控制台。
问候
Scott
Matthew,
您还可以查看 进入跟踪/日志文件。
您正在使用的HANA版本是什么? 您是从odata文件中调用存储的proc吗? 如果是这样,直接在sql控制台中执行该命令的时间是什么?
谢谢 Matthew Kennedy 分享解决方案。 它确实帮助我解决了相同的问题。
一周热门 更多>