Réponses multiples sur l'appel restant node.js

J'ai créé une bibliothèque pour envoyer des demandes REST:

var rest = require('restler'); module.exports = { beginSession: function() { var options = { method: "GET", query: {begin_session: '1'}}; rest.get('http://countly/i', options). on('complete', function(data, response){ console.log('Status: ' + response.statusCode); }); } }; 

Le problème est que chaque fois que j'utilise la bibliothèque et que l'appel est répondu, le 'sur complet' s'appelle plusieurs fois: la 1ère utilisation de la méthode appellera 'à la fin' une seule fois, la 2ème utilisation de la méthode appellera 'à la fin' deux fois etc….

Qu'est-ce que je fais mal?

Merci Jose

Je luttais également avec celui-ci. Mais n'a pas trouvé de réponse sur Internet. Je me suis enfin aperçu. C'était causé par l'événement «complet» enregistré chaque fois que votre rest.get () est appelé.

Ma solution consiste à utiliser .once () au lieu de .on (). Par exemple:

 var rest = require('restler'); rest.get('url_to_fetch').once('complete', function(rtn, rsp){ ....blah blah.... }); // refer here http://nodejs.org/api/events.html#events_emitter_once_event_listener 

Espérons que cela aide.

TL; DR: Bug in restler, solution rapide jusqu'à ce que npm soit mis à jour: ajouter git master à package.json

Le vrai problème ici est que certaines modifications apportées à l'API événementielle dans le noeud 0.10 entraînent la répétition des anciens auditeurs d'événements réutilisables comme décrit dans https://github.com/danwrong/restler/issues/112 .

Fin août, cela a été corrigé dans https://github.com/danwrong/restler/pull/113 . Alors que nous attendons une version npm appropriée, cela fonctionne pour moi en utilisant la tête de git actuelle.

 "restler": "git://github.com/danwrong/restler.git#9d455ff14c57ddbe263dbbcd0289d76413bfe07d" 

AVERTISSEMENT: Je ne sais pas ce qui est brisé dans cette version ou pourquoi il n'est pas encore publié. Je n'ai pas traversé les problèmes ou les diffs depuis la dernière version pour le découvrir.

MISE À JOUR Août 2014: Il y a eu une libération de npm depuis lors, il semble inclure la correction.

C'est parce que vous attachez un nouvel événement pour chaque appel. Essayez d'annuler l'événement en premier.

Une exception apparaissant dans votre gestionnaire de rappel pour une requête JSON peut également provoquer ce comportement.

Consultez la demande d'extraction pour une solution pour cela: https://github.com/danwrong/restler/pull/94

Veuillez consulter la version v3.2.2. Améliorez votre package.json:

 npm install restler --save 

Il a résolu cette question pour moi.