在进一步执行代码之前,如何在 SAPUI5 中等待 OData 服务的读取操作的响应?

How to wait for the response of an OData service's read operation in SAPUI5 before further execution of code?

我有一个函数(比如 function1),它在中途调用另一个函数(比如 function2)中的 OData 调用。我在function1中调用OData之后有一些处理,这取决于function2中OData读取调用的响应。

目前,在function1执行过程中,当调用function2时,function2被执行,但是OData响应只有在function1的剩余行执行完后才会收到。有没有办法在 function1 的剩余行执行之前等待 function2 中 OData 调用的响应?

我是异步编程的新手。但我尝试过的是:

function1: function() {
//some code
this.function2();
//some code & this is executed before success/error function of the OData call in function2
}

function2: async function() {
//oModel declaration
const oPromise = await new Promise((resolve, reject) => {
                        oModel.read("/entityset", {
                        success: (oData) => {
                            resolve(oData)
                        },
                        error: (oError) => {}
                    });
                    }).then((oData) => {
                        //some code
                    });
}

你的方向很好。 您应该在 function1 中使用 await 语句调用 function2。这样做的先决条件是也使 function1 async

function1: async function() {
//some code
await this.function2();
//some code & this will execute after success/error function of the OData call in function2
}

function2: async function() {
//oModel declaration
const oPromise = await new Promise((resolve, reject) => {
                        oModel.read("/entityset", {
                        success: (oData) => {
                            resolve(oData)
                        },
                        error: (oError) => {}
                    });
                    });
}