私はコールバックに比較的慣れていないため、次のコードを機能させることができませんでした。async.map 関数を使用して、各 Web 呼び出しからそれぞれのページにデータを返しました。ただし、前のがWebページのhtmlを返しているにもかかわらず、私のconsole.log(return)
は返されています。これが私のコードです:[ , undefined]
console.log(data)
callback(data)
var http = require("http"),
fs = require("fs"),
page, chap, ot,
async = require("async");
ot = fs.open('ot.txt', 'w');
page = "test";
chap = 2;
function getData(url, callback) {
var data = "";
var options = {
host: "rs.au.com",
port: 80
}
options.path = url;
console.log("request sent to: http://" + options.host + options.path);
var req = http.request(options, function(res) {
console.log("Response received " + res.statusCode);
res.on('data', function(chunk) {
data += chunk;
});
res.on('end', function(e) {
console.log(data);
callback(e, data);
});
}).end();
}
function main() {
var pathArr = [];
for ( var i = 1; i <= chap; i++ ) {
pathArr[i] = "/".concat(page, "/", i, ".html");
}
async.map(pathArr, getData, function(err, result) {
console.log("The result is :" + result);
});
}
main();
私のコードが機能しない理由と、それを修正する方法を教えてください。
とても有難い!
編集: Brandon Tilley の応答の後、コールバック関数を から に修正しましたcallback(data)
が、最後の出力callback(e, data)
から応答がありません。console.log