asynchronous每个和foreachfunction
我试图使用asynchronous的每个函数来调用abc函数,我遇到了一些问题。 代码如下。
-
我在这里使用for循环的原因是因为当我尝试使用每个函数时,传递到abc函数url的url是以数组而不是string的forms。 所以我想知道是否有任何其他的方式来清除这个,而不必添加for循环。
-
在添加一对print语句之后,我意识到代码从不执行传递http.get(url [a],newFileLoc,function(error,result){出于某种原因,总是有一个错误消息“async.each(urls,downloadFile (url,函数(){TypeError:对象#没有方法'每个'“
-
所以我想我真正的问题是,代码究竟有什么问题? 我尝试使用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常见的)时,代码非常难以阅读。