如何拆分批量OData请求

时间:2019-03-18 15:53:17

标签: sapui5

我正在使用“批量” OData请求。但是,在同一请求中调用了两个单独的实体读取。

如何将它们分为2个单独的批处理请求?

例如

 
// Retreive Category Info and set up panel info.
_.each(oViewData.categories, function(result, index) {
  surveyModelCat.read("/CategorySet", {
    filters: [
      new Filter("CategoryId", FilterOperator.EQ, index)
    ],
    success: function(oDataCategory) {
      oViewData.categories[index].categoryId = oDataCategory.results[0].CategoryId;
      oViewData.categories[index].categoryDesc = oDataCategory.results[0].CategoryDesc;
      oViewData.categories[index].expanded = false;
      oViewData.categories[index].complete = false;
      oViewModel.setData(oViewData);
      resolve(oDataCategory);
    },
    error: function(oError) {
      self.getView().byId("Page1").setVisible(true);
      self.busyDialog.close();
    }
  });
}); 

然后再..

resultOfflineSet

在运行应用程序并在Chrome中查看“网络”标签时,我可以看到CategorySet$batch的调用是同一$(document).ready(function () { let url = $("#webinarInfo").attr('value'); $("#webinarInfo").click(function () { $.fancybox.open([ { type: 'iframe', href: url, width: 630, height: 750, autoSize: true, closeBtn: false, padding: 0, afterClose: function () { location.reload(); } } ]); }); $("#closeInfo").click(function () { parent.$.fancybox.close(); }); //checks if browser has enabled cookies and if the user doesn't have a cookie if (navigator.cookieEnabled === true) { if (document.cookie === "" || document.cookie === undefined) { return callFancybox(); } } //trigger button with the popup-info. after that create a cookie function callFancybox() { $("#webinarInfo").trigger("click"); document.cookie = setWebinarCookie(); } });请求的一部分。

为什么它们不在两个单独的批次中?

1 个答案:

答案 0 :(得分:0)

好,您可以尝试两种方法。首先,oData模型具有名为useBatch的设置,可以将其设置为false。否则,在读取结束时,oData模型将具有一个submitBatchRequests方法,该方法将强制刷新将要批处理的所有未决请求。这些都可以解决问题。