我在理解此代码段中的代码时遇到了一些麻烦。我一直在评论和研究,但我遇到了障碍。好吧,我遇到了两个障碍,但其中一个与过时的 csv 库有关。这是代码片段:
var csv2console = function(csvfile, headers) {
console.log(headers.join("\t"));
csv()
.from.path(csvfile)
.on('record', function(row, index) {
var shares = Math.round(marketCapFloat(row[2])/row[3], 0);
var eps = (row[3]/row[4]).toFixed(3);
var earnings = accounting.formatMoney(eps * shares);
outrow = row.concat([shares, eps, earnings]);
console.log(outrow.join("\t"));
});
};
var buildfn = function(csvfile, headers) {
var response2console = function(result, response) {
if (result instanceof Error) {
console.error('Error: ' + util.format(response.message));associated with the error?
} else {
console.error("Wrote %s", csvfile);
fs.writeFileSync(csvfile, result);
csv2console(csvfile, headers);
}
};
return response2console;
};
var marketResearch = function(symbols, columns, csvfile, headers) {
symbols = symbols || SYMBOLS_DEFAULT;
columns = columns || COLUMNS_DEFAULT;
csvfile = csvfile || CSVFILE_DEFAULT;
headers = headers || HEADERS_DEFAULT;
var apiurl = financeurl(symbols, columns);
var response2console = buildfn(csvfile, headers);
rest.get(apiurl).on('complete', response2console);
};
我对这个代码片段的主要问题与第二个函数有关。我知道他们正在将一个函数传递回调用函数,但我不明白为什么 response2console 函数有两个参数,但在市场研究函数中使用它时似乎没有任何参数传递给该函数. 这些是默认参数还是虚拟参数?它们似乎正在被使用,所以参数需要从某个地方获取?它们是否与 csvfile 和 headers 对应?
我的第二个问题与 .on() 函数有关。我查看了 csv 文档,但找不到任何关于它的作用的评论。他们似乎只使用它。经过更多研究,我得出结论,这是一个 javascript 或 node.js 事件函数,并且“记录”是一种事件。但是我在任何地方都找不到这个“记录”事件是什么的文档。任何关于在哪里寻找的建议或任何帮助将不胜感激。
csv 文档: http: //www.adaltas.com/projects/node-csv/from.html