Tengo una función (digamos function1), que a mitad de camino llama a una llamada OData en otra función (digamos function2). Tengo un proceso después de la llamada de OData en la función 1, que depende de la respuesta de la llamada de lectura de OData en la función 2.
Actualmente, durante la ejecución de la función 1, cuando se llama a la función 2, se ejecuta la función 2, pero la respuesta de OData solo se recibe después de ejecutar las líneas restantes de la función 1. ¿Hay alguna forma de esperar la respuesta de la llamada OData en la función 2 antes de que se ejecuten las líneas restantes de la función 1?
Soy súper nuevo en la programación asíncrona. Pero lo que he probado es:
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 }); }Estás en una buena dirección. Debe llamar a function2 con una declaración de await dentro de function1 . Un requisito previo para eso es hacer que function1 también sea 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) => {} }); }); }