我正在尝试使用async的每个函数来调用abc函数,我遇到了几个问题。代码如下。
我在这里使用for循环的原因是因为当我尝试使用每个函数时,传递给abc函数的url的url是数组而不是字符串的形式。所以我想知道是否还有其他方法可以清除它而无需添加for循环。
在添加了几个打印语句之后,我意识到代码永远不会执行传递http.get(url [a],newFileLoc,函数(错误,结果){由于某种原因。总是有错误消息“async .each(urls,downloadFile(urls,function(){ TypeError:Object#没有方法'each'“
所以我想我真正的问题是,代码究竟出了什么问题?我试图使用forEach而不是每个,但还有另一个错误“iterator(x,function(err){ TypeError:undefined不是函数“。
有人请帮忙!!!
var abc = function ( url, cb ) {
for (var a = 0; a < url.length; a++){
var index = url[a].lastIndexOf("/") + 1;
var filename = url[a].substr(index);
var newFileLoc = "./tmp/" + filename;
http.get(url[a], newFileLoc, function (error, result) {
if (error) {
console.error(error);
} else {
cb();
}
});
}
}
var urls = ["www.randomurl.random.random/", "www.randomurl.random.random/"];
async.each(urls, abc(urls, function(){
console.log('downloaded' + results);
}), function(err){
if(err){
console.log(err);
}
});
答案 0 :(得分:0)
each
的签名是each(arr, iterator, callback)
,但在iterator
地方,您直接调用abc
并且它不会返回功能。
该问题的解决方法导致:
async.each(
urls,
abc,
function(err) {
if(err){
console.log(err);
};
}
);
另请注意,尝试调用console.log
会导致IE9及其崩溃。
... 请清理缩进。当开始和结束括号不遵循One True Brace样式(这是JavaScript常见的)时,代码很难阅读。