我对回调比较陌生,并且未能使以下代码正常工作。我已经使用 async.map 函数将来自每个 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
输出中得到任何回复。