À boire et à manger

Plus je mets les doigts dans le Javascript, et encore à petit niveau à ce jour, plus je m’aperçois de la discordance qui existe encore dans les différentes scripts utilisés dans Dotclear.

Je ne parle pas des librairies — comme jQuery et Codemirror, pour ne citer que ces deux-là — qu’on utilise mais bien de ce qui a été spécialement codé pour l’appli. J’avance petit à petit vers ES6, maintenant supporté par tous les navigateurs modernes et je commence à relever ici et là quelques horreurs défauts, comme celle celui qui empêchait la réutilisation d’une fonction plus d’une fois dans une page.

Encore hier j’ai découvert que la gestion d’absence de réponse d’un serveur sollicité était laissée de côté alors qu’il faudrait logiquement prévenir qu’il y a un problème quand ça arrive. C’est là que je mesure l’avantage des nouvelles syntaxes et fonctionnalité, comme les promesses — que j’utilise pour l’instant via jQuery qui rend ça très lisible.

Exemple, je suis passé de ça :

var params = {
    f: 'dmHostingMonitorPing',
    xd_check: dotclear.nonce
  };
  $.get('services.php', params, function(data) {
    if ($('rsp[status=failed]', data).length > 0) {
      // For debugging purpose only:
      // console.log($('rsp',data).attr('message'));
      window.console.log('Dotclear REST server error');
      ... // Allo Houston, on a un problème avec l'admin
    } else {
      ... // Ça roule
    }
  });

à ça :

$.get('services.php', {
      f: 'dmHostingMonitorPing',
      xd_check: dotclear.nonce
    })
    .done(function(data) {
      if ($('rsp[status=failed]', data).length > 0) {
        // For debugging purpose only:
        // console.log($('rsp',data).attr('message'));
        window.console.log('Dotclear REST server error');
        ...  // Allo Houston, on a un problème avec le service REST de l'admin
      } else {
        ...  // Ça roule
      }
    })
    .fail(function(jqXHR, textStatus, errorThrown) {
      window.console.log('AJAX ' + textStatus + ' (status: ' + jqXHR.status + ' ' + errorThrown + ')');
      ...   // Allo Houston, on a un problème avec le serveur
    });

Qui me permet de gérer aussi les erreurs de type 400 et 500 retournées par la requête AJAX, ce qui n’était pas le cas auparavant.

Bref, y’a encore du boulot pour mettre un peu tout ça au carré, mais c’est cool, j’apprends des tas de trucs au passage !

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/13932

Haut de page