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