1
我对回调比较陌生,并且在获取下面的代码的过程中不成功。我已经使用async.map函数将每个Web调用的数据返回到其各自的页面。但是,即使callback(data)
之前的console.log(data)
正在返回网页的html,我的console.log(return)
也会返回[ , undefined]
。这里是我的代码:回调Async.Map不能正常工作
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();
任何人都可以请指出为什么我的代码不能正常工作以及如何纠正它?
非常感谢!
编辑:布兰登蒂利的回应后,我从修订的callback(data)
回调函数callback(e, data)
,但我没有得到响应,现在从最后console.log
输出。
感谢布兰登您的回复!不幸的是,我试过你的解决方案,但是,我没有从'console.log(result)'命令获得任何数组输出?我上面编辑了我的代码以反映新的变化。 – rs77
我已更新我的答案与其他问题。 –
再次感谢布兰登!完善! – rs77