我正在尝试以下列方式进行批量读取调用。
批处理应该有:(
"/EntitySet", "Get", Filter1),
("/EntitySet", "Get", Filter2),
("/EntitySet", "Get", Filter3)
如何进行这样的批量调用。我参考了这个博客,但没有太大帮助。 https://archive.sap.com/discussions/thread/3957490
提前致谢
我正在尝试以下列方式进行批量读取调用。
批处理应该有:(
"/EntitySet", "Get", Filter1),
("/EntitySet", "Get", Filter2),
("/EntitySet", "Get", Filter3)
如何进行这样的批量调用。我参考了这个博客,但没有太大帮助。 https://archive.sap.com/discussions/thread/3957490
提前致谢
您是否需要按程序进行这些调用(通过ODataModel#read)?
如果您使用常规绑定,然后只对其应用过滤器,那么它们将自动分组到一个批处理中(只要您在 ODataModel 的构造函数中使用useBatch
参数启用了批处理模式——默认情况下它是启用的)。
如果您确实在使用 ODataModel#read,通常如果启用了批处理模式,它们也会一起批处理。
如果由于某种原因它不起作用,您可以随时指定groupId
使用 read 时,分别batchGroupId
在进行绑定时,以强制一起触发请求。您可以使用例如jQuery.sap.uid为此生成一个(伪)唯一值。当您生成此 groupId 时,您应该告诉 OData 模型使用setDeferredGroups
. 完成请求后,您可以使用submitChanges
.
var sGroup = jQuery.sap.uid(),
oModel = this.getModel();
oModel.setDeferredGroups([sGroup]);
oModel.read("/EntitySet", {groupId: sGroup, filters: ...});
oModel.read("/EntitySet", {groupId: sGroup, filters: ...});
oModel.read("/EntitySet", {groupId: sGroup, filters: ...});
oModel.submitChanges({groupId: sGroup});