-1

我正在尝试以下列方式进行批量读取调用。

批处理应该有:(
"/EntitySet", "Get", Filter1),
("/EntitySet", "Get", Filter2),
("/EntitySet", "Get", Filter3)

如何进行这样的批量调用。我参考了这个博客,但没有太大帮助。 https://archive.sap.com/discussions/thread/3957490

提前致谢

4

1 回答 1

2

您是否需要按程序进行这些调用(通过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});
于 2017-03-13T20:26:50.807 回答