SAPUI5&;ODataModelV2:找出哪些请求组有挂起的请求

SAPUI5&;ODataModelV2:找出哪些请求组有挂起的请求,odata,sapui5,Odata,Sapui5,我正在使用并且有3个延迟请求组。如果有超过一组的请求,我必须按特定顺序提交。 因此,我需要知道哪个组有挂起的请求。现在已经有了一个智能的方法来解决这个问题了吗 我的请求组的定义 通过方法“createEntry”创建的条目被收集到组“create”中 通过“删除”方法删除的条目被收集到“删除”组中 其他所有内容都收集到“更改”组中 到目前为止我发现了什么 “delete”组很简单,如果有,它包含在“oDataModel.mDeferredRequests”中 仅当存在对“更改”组的请求时,

我正在使用并且有3个延迟请求组。如果有超过一组的请求,我必须按特定顺序提交。 因此,我需要知道哪个组有挂起的请求。现在已经有了一个智能的方法来解决这个问题了吗

我的请求组的定义

  • 通过方法“createEntry”创建的条目被收集到组“create”中
  • 通过“删除”方法删除的条目被收集到“删除”组中
  • 其他所有内容都收集到“更改”组中
到目前为止我发现了什么

  • “delete”组很简单,如果有,它包含在“oDataModel.mDeferredRequests”中
  • 仅当存在对“更改”组的请求时,“创建”组才包含在“mDeferredRequests”中。因此,如果它包含在“mDeferredRequests”中,我知道有对“create”和“changes”的请求
但如果只有“创建”或“更改”请求,我只能通过方法“getPendingChanges”找到方法。 新创建的实体的groupId包含在元数据中,如下所示:

NewObject('id-123456-00'):
    Attribute: "123"
    __metadata:
        created:
            changeSetId: "chgSet"
            eTag: undefined
            error: undefined
            groupId: "create"
            ...
        type: "..."
        uri: "/sap/opu/odata/sap/..."
更改的实体没有groupId,它们看起来是这样的:

UpdatedObject(Key='123'):
Attribute: "abc"
    __metadata:
        id: ".../sap/opu/odata/sap/..."
        type: "..."
        uri: ".../sap/opu/odata/sap/..."
因此,我目前唯一的想法是循环“getPendingChanges”中的条目,并检查是否有groupId。
由于我对这个解决方案不满意,我想问您是否有更聪明的方法来确定有未决请求的组。

我不确定答案,但我想知道这是否重要。如果您提交了更改,但没有更改,则不会发生任何事情。为什么不总是按正确的顺序提交所有待定的更改?@Jorg感谢您的评论。我在上一次成功回调内/之后提交以下组更改。正如您提到的,如果没有更改,则不会发生任何事情,因此,如果第一组中没有更改,则不会提交第二组和第三组。