昨天我发布了这个问题,但我想我只是把所有人搞糊涂了。我收到的回答是“你的问题究竟是什么?”所以我今天正在扩大和重新发布。
以下node.js代码段来自文件“accounts.js”,该文件位于路径/ lib中的ETrade api库中。它应该返回包含有关经过身份验证的用户的帐户的数据的json。身份验证部分工作得很好。我对这个函数最后一行的确切内容感到困惑:
this._run(actionDescriptor,{},successCallback,errorCallback);
十年前(我最后一次编码),我们没有“这个”的构造,我对“_run”没有任何线索,谷歌搜索没有帮助。这是功能。
exports.listAccounts = function(successCallback, errorCallback) {
var actionDescriptor = {
method: "GET",
module: "accounts",
action: "accountlist",
useJSON: true,
};
this._run(actionDescriptor, {}, successCallback, errorCallback);
};
据我所知,该功能是通过“et.listAccounts ....”访问的,但后来我的理解变得很糟糕。显然正在执行get并返回json数据。很明显,结果会通过successCallback传回。
在我的app.js文件中,我有以下内容:
var etrade = require('./lib/etrade');
var et = new etrade(configuration);
有人可以建议在app.js中使用一个片段,将帐户数据输出到控制台吗?
似乎必须通过successCallback传回json数据,但我在app.js端如何访问它时迷失了方向。
假设在app.js中我想将帐户数据放在名为myAccounts的变量中。 exports.listAccounts函数没有指定返回值,所以我怀疑我可以做var myAccounts = et.listAccounts()。同样,如果我尝试这样做,myAccounts将是未定义的:et.listAccounts(){myAccounts,error}。最后,listAccounts函数包含两个可能使用的变量名称,“accounts”和“accountlist”,但这些变量在app.js中未定义。
当我在app.js中的successCallback中添加一个函数来向控制台写一个通用消息时,消息会显示在日志中,所以我知道我正在将它放入listAccounts函数并成功返回。在这种情况下,日志也会显示 “请求:[获取]:https://etwssandbox.etrade.com/accounts/sandbox/rest/accountlist.json”
由此我推断出数据实际上已被返回并且在该终点可用。
答案 0 :(得分:1)
十年前(我最后一次编码),我们没有“这个”的构造,我也没有关于“_run”的线索
this
引用当前对象,进一步阅读here。 _run
正是他们选择调用该函数的原因。
我没有这个模块的经验,但粗略地看了一眼git repo,我怀疑你会想要扩展你的app.js
,如此:
et.listAccounts(function(response) {
console.log(response);
});
在javascript函数中是第一个顺序,因此可以像变量see here一样传递。 listAccounts
想要传递一个函数,当它完成后,它将使用一个参数调用它,如etrade.js
中所示。
还有函数errorCallback
,它大致相同,但在出错时调用。您可以像这样扩展上面的代码段:
et.listAccounts(function(response) {
console.log(response);
}, function(error) {
console.log(error);
});