3 votes

javascript : obtenir le nom de la fonction appelante

J'écris un gestionnaire d'événement d'erreur qui capture une erreur et fait un appel ajax au serveur pour la signaler. Le problème est que mon code ressemble souvent à ceci :

function A() {

  //lots of works to calculate SomeParameters; can bug
  CalledVeryOften(SomeParameters);
}

function CalledVeryOften(SomeParameters) {
  // a little bit of work
}

Si je capture l'événement dans la fonction A (ou B, C, D...), c'est parfait ! Mais le problème est que si l'événement window.onerror se déclenche dans CalledVeryOften, il se peut que les paramètres ne soient pas correctement calculés.

Existe-t-il un moyen, dans CalledVeryOften, de déterminer la fonction à partir de laquelle l'appel a été effectué ?

Gracias.

2voto

Rob W Points 125904

Le nom de la fonction appelante peut être obtenu via la fonction obsolète arguments.callee.caller.name propriété MDN : arguments.callee .

Une autre méthode consiste à analyser la valeur de new Error().stack .

Dans Chrome, vous pouvez utiliser :

var stackTrace = {};
Error.captureStackTrace(stackTrace); // Get the stack trace
stackTrace = stackTrace.stack;       // Formatted string

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X