asynchronous每个和foreachfunction

我试图使用asynchronous的每个函数来调用abc函数,我遇到了一些问题。 代码如下。

  1. 我在这里使用for循环的原因是因为当我尝试使用每个函数时,传递到abc函数url的url是以数组而不是string的forms。 所以我想知道是否有任何其他的方式来清除这个,而不必添加for循环。

  2. 在添加一对print语句之后,我意识到代码从不执行传递http.get(url [a],newFileLoc,function(error,result){出于某种原因,总是有一个错误消息“async.each(urls,downloadFile (url,函数(){TypeError:对象#没有方法'每个'“

  3. 所以我想我真正的问题是,代码究竟有什么问题? 我尝试使用forEach而不是每个,但仍然有另一个错误“迭代器(x,函数(错误){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); } }); 

each each(arr, iterator, callback)的签名都是each(arr, iterator, callback) ,但是在iterator地方,你直接调用abc而不返回一个函数。

解决这个问题导致:

 async.each( urls, abc, function(err) { if(err){ console.log(err); }; } ); 

另外请注意,试图调用console.log会导致IE9崩溃。

清理缩进。 当开始和结束括号不遵循The One True Brace样式(这是JavaScript常见的)时,代码非常难以阅读。