我是node.js.Learning异步库的新手,目前我有urls数组。对于每个网址,我必须向某个网站发出请求,我将从html页面获取其超链接。所以我们我必须使用Node.js的request.js模块递归调用。
var urls=["http://www.a.com","http://www.b.com"];
function getUrls(url,cb){
request(url,function(error,response,body){
if(response && response.statusCode==200)
{
}
cb();
});
}
function startProcess(urls){
async.map(urls,getUrls,function(error,data){
})
}
startProcess(urls);
在getUrls函数中,我每次为每个url调用请求函数。当我从响应中获取html页面数据时。我也从该页面抓取网址。我想打电话给"请求"这些网址的功能也是递归的。
没有async.map函数可以完成吗?
答案 0 :(得分:0)
你不能。经过一些迭代后,您将获得堆栈溢出。你应该做些什么来解决这个任务,就是保持你要抓取的网址队列。然后在每个成功的响应中将新url添加到此队列中。像这样:
#include <iostream>
TCHAR* Converter(char* cha)
{
int aa = strlen(cha);
TCHAR* tmp = new TCHAR[aa+1];
for(int i = 0; i< aa+1; i++)
{
tmp[i]=cha[i];
}
return tmp;
}
int main()
{
char* chstr= new char[100];
chstr = "char string";
TCHAR* Tstr = new TCHAR[100];
//Below function "Converter" will do it
Tstr = Converter(chstr);
std::cout<<chstr<<std::endl;
std::wcout<<Tstr<<std::endl;
}