Javascript 异步each和foreach函数
我试图使用async的each函数调用abc函数,但遇到了几个问题。代码如下Javascript 异步each和foreach函数,javascript,node.js,foreach,each,Javascript,Node.js,Foreach,Each,我试图使用async的each函数调用abc函数,但遇到了几个问题。代码如下 我在这里使用for循环的原因是,当我尝试使用每个函数时,传递到abc函数的url中的url是数组形式,而不是字符串形式。因此,我想知道是否有其他方法可以在不必添加for循环的情况下清除这个问题 在添加了几个print语句之后,我意识到代码从来不会执行passhttp.get(url[a],newFileLoc,function(error,result){出于某种原因。总是会有一条错误消息“async.each(url
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);
}
});
var abc=函数(url,cb){
对于(var a=0;a每个
的签名都是每个(arr、迭代器、回调)
,但是在迭代器
位置,您直接调用abc
,它不返回函数
解决该问题会导致:
async.each(
urls,
abc,
function(err) {
if(err){
console.log(err);
};
}
);
还请注意,尝试调用console.log
会导致IE9及以上版本的脚本崩溃
…请清理缩进。当开始和结束大括号不遵循一个真正的大括号样式(这是JavaScript的常见样式)时,代码很难阅读.如果您不将abc
传递到每个中,它怎么可能被调用?对不起,那是个错误。更正了!所以您执行了var async=require('async')
?如果执行console.log(async)
您认为输出是什么?是的,我在标题中包含了所有模块。代码片段显然是node.js-only,因此console.log
不是问题。