Ich habe diese Frage gestern gepostet, aber ich denke, ich habe gerade alle verwirrt. Ich habe Antworten wie "Was genau ist deine Frage?" Ich dehne mich also aus und reposte heute.Weitergabe von Variablen durch Callback-Funktionen in node.js
Das folgende node.js-Snippet stammt aus der Datei "accounts.js", die sich in einer ETrade-API-Bibliothek befindet, die im Pfad/lib existiert. Es sollte json zurückgeben, das Daten über die Konten des authentifizierten Benutzers enthält. Der Authentifizierungsteil funktioniert großartig. Ich bin verwirrt darüber, was genau in der letzten Zeile dieser Funktion getan:
vorthis._run(actionDescriptor,{},successCallback,errorCallback);
Zehn Jahre (das letzte Mal war ich Codierung), wir haben nicht das Konstrukt haben „dieses“ und ich haven Es ist kein Hinweis auf "_run" und die Google-Suche war nicht hilfreich. Hier ist die Funktion.
exports.listAccounts = function(successCallback, errorCallback) {
var actionDescriptor = {
method: "GET",
module: "accounts",
action: "accountlist",
useJSON: true,
};
this._run(actionDescriptor, {}, successCallback, errorCallback);
};
Ich verstehe, dass die Funktion mit Zugriff auf „et.listAccounts ....“ aber dann geht mein Verständnis alle in der Hölle. Es ist ziemlich offensichtlich, dass ein get ausgeführt wird und json Daten zurückgegeben werden. Es ist auch offensichtlich, dass das Ergebnis durch den successCallback zurückgegeben wird.
In meiner app.js Datei, ich habe folgenden:
var etrade = require('./lib/etrade');
var et = new etrade(configuration);
Kann jemand bitte einen Schnipsel vorschlagen, in app.js verwendet werden, die folgenden Ausgabe der Konten Daten an den Konsole?
Es scheint, als müssten die JSON-Daten durch den successCallback zurückgegeben werden, aber ich weiß nicht, wie ich auf der Seite von app.js darauf zugreifen kann.
Angenommen, in app.js möchte ich die Konten Daten in einer Variablen namens myAccounts setzen. Die Funktion exports.listAccounts gibt keinen Rückgabewert an, daher bezweifle ich, dass ich var myAccounts = et.listAccounts() ausführen kann. Ebenso ist myAccounts nicht definiert, wenn ich dies versuche: et.listAccounts() {myAccounts, error}. Schließlich enthält die listAccounts-Funktion zwei mögliche Variablennamen, die ich verwenden könnte, "accounts" und "accountlist", aber diese erweisen sich bei app.js als undefiniert.
Wenn ich eine Funktion in successCallback in app.js eine generische Nachricht an die Konsole schreiben, wird die Nachricht im Protokoll angezeigt, damit ich weiß, dass ich es in die listAccounts-Funktion und zurück erfolgreich mache. In diesem Fall zeigt das Protokoll auch "Anfrage: [GET]: https://etwssandbox.etrade.com/accounts/sandbox/rest/accountlist.json"
Daraus kann ich ableiten, dass die Daten tatsächlich zurückgegeben werden und an diesem Endpunkt verfügbar ist.
'_run' ist keine Standardmethode in js oder sogar Knoten. Wahrscheinlich stammt es von der API, die Sie zum Abrufen der Daten verwenden. Wir müssen wissen, was das ist zu verstehen, was es tut – slebetman
@slebetman es ist hier https://github.com/theidealist/node-etrade-api/blob/master/lib/accounts.js – Jack
ja, das ist richtig. – Jerome