9
votes

Comment résoudre les problèmes de bibliothèques de noeuds tels que Async et Demande

J'ai écrit un script de nœud qui reçoit des données en demandant des données API de repos (à l'aide de la demande de bibliothèque). Il se compose de quelques fonctions, comme:

Fetcher.prototype.init = function() {
    async.parallel([ this.getTwitterData.bind(this), this.getKloutData.bind(this) ], function() {
        console.log('done');
    });
}
Fetcher.prototype.getKloutData = function(callback) {
    function saveData() {
        /* store data */
    }


    request(url, saveData.bind(this);
};


0 commentaires

3 Réponses :


3
votes

Vous pouvez enregistrer cela dans une autre variable: xxx

puis me est votre ce .


0 commentaires

9
votes

Vous le faites exactement bien.

L'alternative consiste à conserver une référence à l'objet toujours dans le contexte au lieu d'utiliser lier , mais qui nécessite une gymnastique: < Pré> xxx

Vous pouvez également faire la reliure à l'avance: xxx


1 commentaires

La bibliothèque de soussecore a une fonction pratique appelée Bindall qui rend cela moins douloureux. Et si vous optez pour Coffeescript, vous pouvez simplement définir les méthodes avec la flèche de la graisse et vous ne serez pas obligé de faire une liaison explicite du tout.



0
votes

objet instancier avec cette fonction: xxx pré>

Ceci fera une liaison automatique de toutes les fonctions, de sorte que vous obtiendrez un objet dans un style d'habitude, Lorsque des méthodes à l'intérieur d'objets ont un contexte de son objet. P>

Vous pouvez donc instancier des objets non via: p> xxx pré>

mais: p>

var obj = newClass(Fetcher);


1 commentaires

Ma question initiale était dans un environnement Nodejs où JQuery n'a pas de sens. Aussi les méthodes Bindall dans le soussecore et Lodash (LOGS fonctionnant dans tous les environnements JS) sont conçus pour vous faire pour vous.