このコード スニペットのコードを理解するのに苦労しています。私はコメントして調査してきましたが、問題が発生しました。2 つの障害に遭遇しましたが、1 つは古い 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);
};
このコード スニペットの主な問題は、2 番目の関数に関係しています。彼らは関数を呼び出し元の関数に戻していますが、なぜresponse2console関数に2つのパラメーターがあるのか わかりませんが、市場調査関数で使用されているときに関数にパラメーターが渡されないようです. これらはデフォルト パラメータですか、それともダミー パラメータですか。それらは使用されているように見えるので、パラメータをどこかから取得する必要がありますか? それらは csvfile とヘッダーに対応していますか?
私の 2 番目の問題は、.on() 関数に関係しています。csvのドキュメントを見ましたが、これが何をするのかについてのコメントは見つかりませんでした。彼らはそれを使うだけのようです。さらに調査した結果、これは javascript または node.js のイベント関数であり、「レコード」はイベントの一種であるという結論に達しました。しかし、この「記録」イベントが何であるかについてのドキュメントはどこにも見つかりません。どこを見るべきか、または問題の助けについての提案をいただければ幸いです。
csv ドキュメント: http://www.adaltas.com/projects/node-csv/from.html