在进一步执行代码之前,如何在 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) => {}
});
});
}
我有一个函数(比如 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) => {}
});
});
}