¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo solucionar el error Maximum call stack exceeded al cambiar pestañas en SAPUI5 1.71

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 9 Vistas
0
Cargando...

Tengo un escenario en el que tengo múltiples pestañas de iconos y al cambiar las pestañas estamos realizando múltiples llamadas en lote (lectura y/o actualización) con expandir. Y muchas veces obtenemos el error "Maximum call stack exceeded" durante la llamada de lectura en la versión UI5 1.71, pero funciona bien en versiones anteriores como 1.52.

Uncaught RangeError: Maximum call stack size exceeded

en constructor.D.resolveFromCache (ODataModel-dbg.js:6422) en constructor.D.resolveFromCache (ODataModel-dbg.js:6441) en constructor.D.resolveFromCache (ODataModel-dbg.js:6441) en constructor.D.resolveFromCache (ODataModel-dbg.js:6441) en constructor.D.resolveFromCache (ODataModel-dbg.js:6441) en constructor.D.resolveFromCache (ODataModel-dbg.js:6441) en constructor.D.resolveFromCache (ODataModel-dbg.js:6441) en constructor.D.resolveFromCache (ODataModel-dbg.js:6441) en constructor.D.resolveFromCache (ODataModel-dbg.js:6441) en constructor.D.resolveFromCache (ODataModel-dbg.js:6441)

¿Alguna sugerencia para solucionar esto?

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola Sahidur,

Tuve el mismo problema y aquí está lo que lo estaba causando para mí. Estaba llamando a una función de importación utilizando el método read en la clase sap.ui.model.odata.v2.ODataModel en lugar de utilizar el método dedicado callFunction . Usar este último resolvió mi problema.

Espero que esto ayude a alguien más, ya que seguramente has resuelto tu problema para ahora.

Saludos,

Sylvain Catudal

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Acabo de darme cuenta de que esto está ocurriendo porque el código siempre realiza la misma llamada y el servicio devolverá la información del usuario autenticado:

/UserSet('X')

No es una buena práctica, en una situación como esta se debería usar una llamada a función (es decir, getAuthenticatedUser).

Saludos,
Sylvain

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Sahidur,

Encontré otra situación donde se produciría el mismo comportamiento para una entidad obtenida. Aquí está la secuencia:

/UserSet('usuario1')

/UserSet('usuario2')

/UserSet('usuario1') // la tercera lectura produciría exactamente la misma traza de pila que tienes arriba

Mi solución temporal fue establecer la variable local mPathCache en {} al cerrar sesión. Dado que estoy extendiendo el modelo base ODataModel, aquí está cómo se ve en mi código.

Me suscribo al evento de cierre de sesión en el constructor de mi CustomODataModel:

sap.ui.getCore().getEventBus().subscribe("userAuthentification", "logout", this._invalidate.bind(this));

Aquí está la función _invalidate:

_invalidate: function() {
    this.mPathCache = {};
}

Con la esperanza de que esto ayude a alguien,

Sylvain

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

try oModel.mPathCache = {};

Al solicitar la operación de lectura, la ruta de contexto se almacena en la propiedad local mPatchCache de oDataModel, y si este objeto se llena con claves duplicadas, el framework devuelve ese error.

Saludos,

Ranganath

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?