nodejs中的睡眠功能实现了暂停几秒钟的方法
在网上了解了nodejs中的睡眠功能,搜索了很多nodejs中的睡眠功能。下面我记录一下,有需要了解的朋友可以参考一下。希望这篇文章对你有所帮助。
背景
在使用nodejs爬虫时,我们经常会在频率上遇到别人网站的防爬机制。这个时候,如果我们不处理这个程序,它就会挂起,重启会继续被阻止。如何解决这个问题,我的想法是暂停程序10分钟以上,继续爬行。
两种方法
其实用setTimeout就可以实现,但是nodejs异步已经是金字塔了,再加一层会更恐怖,所以本文用nodejs第三方模块async来实现。async的目的是让多个异步程序按照开发人员想要的顺序执行,代码编写符合同步风格。其实是异步运行的,这也解决了回调金字塔的问题。
Async foundation使用://www . JB 51 . net/article/118526 . htm。
三个正常代码
访问3个网站,比如百度、优酷、腾讯。没有停顿的代码。
var async=require(' async ');var http=require(' http ');var task=[];任务。push(函数(回调){console。时间(‘访问3个网站的时间统计’);http . get(' http://www.baidu.com/',function(RES){ console . log('百度访问结果: ' RES . statuscode);回调(null);}).on ('error ',function (e) {console.log '(百度访问结果: ' e . message);回调(e);});})task . push(function(callback){ http . get(' http://www . Youku.com/'),function(RES){ console . log(' Youku访问结果: ' RES . statuscode);回调(null);}).on ('error ',function (e) {console.log '(优酷访问结果: ' e . message);回调(e);});}) task.push(函数(回调){http.get ('http://www.qq.com/'),function (res) {console.log('腾讯访问结果: ' RES . statuscode);回调(null);}).on ('error ',function (e) {console.log '(腾讯访问结果: ' e . message);回调(e);});})异步。瀑布(任务,函数(错误,结果){控制台。timeend('访问3个网站的时间统计');if(err)返回console . log(err);Console.log(“所有访问成功”);})四次测试
访问网站需要时间,三个网站的访问时间为254毫秒。
5.暂停代码
例如,访问第一个网站后暂停5秒,访问第二个网站后暂停10秒。
var async=require(' async ');var http=require(' http ');var task=[];任务。push(函数(回调){console。时间(‘访问3个网站的时间统计’);http . get(' http://www.baidu.com/',function(RES){ console . log('百度访问结果: ' RES . statuscode);setTimeout(函数(){回调(null));}, 5000);}).on ('error ',function (e) {console.log '(百度访问结果: ' e . message);回调(e);});})task . push(function(callback){ http . get(' http://www . Youku.com/'),function(RES){ console . log(' Youku访问结果: ' RES . statuscode);setTimeout(函数(){回调(null));}, 10000);}).on ('error ',function (e) {console.log '(优酷访问结果: ' e . message);回调(e);});}) task.push(函数(回调){http.get ('http://www.qq.com/'),function (res) {console.log('腾讯访问结果: ' RES . statuscode);回调(null);}).on ('error ',function (e) {console.log '(腾讯访问结果: ' e . message);回调(e);});})异步。瀑布(任务,函数(错误,结果){控制台。timeend('访问3个网站的时间统计');if(err)返回console . log(err);Console.log(“所有访问成功”);})六项测试
从印刷品可以看出,访问第二个网站需要5秒,访问第三个网站需要10秒。好的!
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。
版权声明:nodejs中的睡眠功能实现了暂停几秒钟的方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。