¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como resolver o erro Maximum call stack exceeded ao mudar de abas no SAPUI5 1.71

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

Tenho um cenário em que tenho várias guias de ícones e ao trocar as guias estamos fazendo várias chamadas em lote (leitura e/ou atualização) com expansão. E muitas vezes recebemos o erro "Maximum call stack exceeded" durante a chamada de leitura na versão UI5 1.71, mas funciona bem em versões anteriores como 1.52.

Uncaught RangeError: Maximum call stack size exceeded

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

Alguma sugestão para resolver isso?

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

4 Respuestas

0
Cargando...

Olá Sahidur,

Eu tive o mesmo problema e aqui está o que estava causando para mim. Estava chamando uma função de importação usando o método read na classe sap.ui.model.odata.v2.ODataModel em vez de utilizar o método dedicado callFunction . Usar este último resolveu meu problema.

Espero que isso ajude mais alguém, pois com certeza você já resolveu seu problema até agora.

Saudações,

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...

Olá Sahidur,

Encontrei outra situação onde ocorreria o mesmo comportamento para uma entidade obtida. Aqui está a sequência:

/UserSet('usuario1')

/UserSet('usuario2')

/UserSet('usuario1') // a terceira leitura produziria exatamente a mesma pilha de rastreamento que você tem acima

Minha solução temporária foi definir a variável local mPathCache como {} ao fechar a sessão. Como estou estendendo o modelo base ODataModel, aqui está como parece no meu código.

Me inscrevo no evento de fechamento de sessão no construtor do meu CustomODataModel:

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

Aqui está a função _invalidate:

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

Com a esperança de que isso ajude alguém,

Sylvain

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

tente oModel.mPathCache = {};

Ao solicitar a operação de leitura, o caminho de contexto é armazenado na propriedade local mPatchCache do oDataModel e, se este objeto for preenchido com chaves duplicadas, o framework retornará esse erro.

Saudações,

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?