我正在使用'批量'OData请求。但是,在同一请求中调用两个单独的实体读取。
如何将这些分成两个单独的批处理请求?
EG
surveyModel.read("/ResultOfflineSet", {
filters: [
new Filter("QuestionId", FilterOperator.EQ, questionId),
new Filter("JobId", FilterOperator.EQ, self.jobId)
],
success: function(oData, oResponse) {
resolve(oData);
},
error: function (oError) {
reject(false);
}
});
然后......
// 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();
}
});
});
在运行应用程序并查看Chrome中的“网络”选项卡时,我可以看到resultOfflineSet
和CategorySet
的调用是同一个$batch
请求的一部分。
为什么他们不是两个单独的$批次?
嗯,你可以尝试两件事。首先,oData模型有一个名为useBatch
的设置,可以设置为false。否则,在读取结束时,oData模型具有可以调用的submitBatchRequests
方法,该方法将强制刷新要批处理的所有待处理请求。这些都应该解决问题。