如何同步获取并保存在爬虫中

这是在Crawler上运行的networking爬虫的快捷方式代码,它工作的很好。 问题是,爬虫返回20个string半秒,他们存储在MySQL比新的速度慢得多。 如何正确地同步这两个过程。

function crawler(done) { for (i=0, ...) { crawler.queue([{ "uri": link, "callback": function (error, result, $) { var arr = $('.someclass'); done(arr); } }]) }; }; crawler (function (arr) { savetosql(s, arr); }); function savetosql (s, arr) { var query = connection.query('UPDATE ...'); }; 

不知道这是你在找什么,我从来没有使用爬虫,但这是如何序列化在node.js的东西。

 function crawl_step(step,limit) { //for (i=0, ...) { no more for crawler.queue([{ "uri": link, "callback": function (error, result, $) { var arr = $('.someclass'); //done(arr); var query = connection.query('UPDATE ...',calbback(...){ //this runs when the sql query is over if(step<limit) crawl_step(step+1,limit); else {....do something when all crawls are over ...} }); } }]) //}; }; crawl_step(0,100); 

为了让序列化过程更容易理解,我们来看看一些基本的api:只有当存在100个文件(我们使用asynchronous调用,但是以同步的方式)时,才会读取100个文件。

 function step(step_nr){ fs.exists( step_nr+'.txt' , function (exists) { fs.readFile( step_nr+'.txt' , function (err, data) { if (err) throw err; console.log(data); if(step_nr<100) step(step_nr+1); }); }); } step(0);