iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >nodejs中sleep功能实现暂停几秒的方法
  • 352
分享到

nodejs中sleep功能实现暂停几秒的方法

几秒功能方法 2022-06-04 17:06:43 352人浏览 八月长安
摘要

我在网上了解了一下nodejs中sleep功能,搜索了很多关于nodejs中sleep功能介绍,下面我来记录一下,有需要了解的朋友可参考。希望此文章对各位有所帮助。 一 背景 在使用nodejs爬虫的时

我在网上了解了一下nodejs中sleep功能,搜索了很多关于nodejs中sleep功能介绍,下面我来记录一下,有需要了解的朋友可参考。希望此文章对各位有所帮助。

一 背景

在使用nodejs爬虫的时候,经常会遇到别人的网站对频率的反爬机制,这个时候如果不做处理程序就会挂掉,重新启动也会继续被屏蔽.这个问题怎么解决呢,我的想法就是程序暂停10分钟或者更长的时间,继续爬取.

二 方法

其实使用setTimeout就可以实现,只是nodejs异步已经很金字塔了,再加一层会更恐怖,所以本文使用nodejs的第三方模块async来实现,async的目的就是让多个异步的程序,按照开发者想要的顺序来执行,代码书写符合同步风格,其实运行还是异步的,也解决了回调金字塔的问题.

async基础使用 :Http://www.lsjlt.com/article/118526.htm

三 正常代码

访问3个网站,百度,优酷,腾讯为例.不暂停的代码.


var async = require('async'); 
var http = require('http'); 
var task = []; 
task.push(function(callback){ 
 console.time('访问3个网站时间统计'); 
 http.get('http://www.baidu.com/', function(res) {  
  console.log("百度访问结果: " + res.statusCode);  
  callback(null); 
 }).on('error', function(e) {  
  console.log("百度访问结果: " + e.message); 
  callback(e); 
 }); 
}) 
 
task.push(function(callback){ 
 http.get('http://www.youku.com/', function(res) {  
  console.log("优酷访问结果: " + res.statusCode); 
  callback(null); 
 }).on('error', function(e) { 
  console.log("优酷访问结果: " + e.message); 
  callback(e); 
 }); 
}) 
 
task.push(function(callback){ 
 http.get('http://www.qq.com/', function(res) {  
  console.log("腾讯访问结果: " + res.statusCode); 
  callback(null); 
 }).on('error', function(e) {  
  console.log("腾讯访问结果: " + e.message); 
  callback(e); 
 }); 
}) 
 
async.waterfall(task, function(err,result){ 
 console.timeEnd('访问3个网站时间统计'); 
 if(err) return console.log(err); 
 console.log('全部访问成功'); 
}) 

四 测试

查看图片

执行访问网站需要时间,3个网站访问时间统计254ms.

五 暂停代码

比如,访问第一个网站后暂停5秒,访问第二个网站后暂停10秒.


var async = require('async'); 
var http = require('http'); 
var task = []; 
task.push(function(callback){ 
 console.time('访问3个网站时间统计'); 
 http.get('http://www.baidu.com/', function(res) {  
  console.log("百度访问结果: " + res.statusCode); 
  setTimeout(function() { 
   callback(null); 
  }, 5000); 
 }).on('error', function(e) {  
  console.log("百度访问结果: " + e.message); 
  callback(e); 
 }); 
}) 
 
task.push(function(callback){ 
 http.get('http://www.youku.com/', function(res) {  
  console.log("优酷访问结果: " + res.statusCode); 
  setTimeout(function() { 
   callback(null); 
  }, 10000); 
 }).on('error', function(e) { 
  console.log("优酷访问结果: " + e.message); 
  callback(e); 
 }); 
}) 
 
task.push(function(callback){ 
 http.get('http://www.qq.com/', function(res) {  
  console.log("腾讯访问结果: " + res.statusCode); 
  callback(null); 
 }).on('error', function(e) {  
  console.log("腾讯访问结果: " + e.message); 
  callback(e); 
 }); 
}) 
 
async.waterfall(task, function(err,result){ 
 console.timeEnd('访问3个网站时间统计'); 
 if(err) return console.log(err); 
 console.log('全部访问成功'); 
})

六 测试

查看图片

从打印中能看得出,访问第二个网站等待了5秒,访问第三个网站等待了10秒.OK!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: nodejs中sleep功能实现暂停几秒的方法

本文链接: https://www.lsjlt.com/news/12480.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • nodejs中sleep功能实现暂停几秒的方法
    我在网上了解了一下nodejs中sleep功能,搜索了很多关于nodejs中sleep功能介绍,下面我来记录一下,有需要了解的朋友可参考。希望此文章对各位有所帮助。 一 背景 在使用nodejs爬虫的时...
    99+
    2022-06-04
    几秒 功能 方法
  • C/C++中实现让控制台暂停的方法
    目录让控制台暂停的方法运行结果中让控制台停住下面针对这个问题给出以下几种解决方案让控制台暂停的方法 在程序调试的时候,有时控制台会出现闪烁之后又消失的情况,对于控制台中出现的结果可能...
    99+
    2022-11-13
  • 使用Redis实现秒杀功能的简单方法
    1. 怎样预防数据库超售现象 设置数据库事务的隔离级别为Serializable(不可用) Serializable就是让数据库去串行化的去执行事务,一个事务执行完才能去执行下一个事...
    99+
    2022-11-12
  • Android点击Button实现功能的几种方法总结
    Android中Button控件应该算作是比较简单的控件,然而,它的使用频率却是非常的高,今天,我在这里总结了三种常用的点击Button实现其功能的方法。 1.很多时候,我们在...
    99+
    2022-06-06
    button 方法 Android
  • 在PHP中实现重定向功能的几种方法,哪种最优?
    在Web开发中,重定向是一项非常重要的功能。重定向可以使用户在不同的URL之间进行跳转,从而实现更好的用户体验和网站性能优化。在PHP中,实现重定向功能有多种方法,但哪种方法最优呢?本文将详细介绍PHP中实现重定向的几种方法,并分析它们的...
    99+
    2023-09-04
    leetcode 重定向 框架
  • Javascript中实现submit功能的方法
    这篇文章将为大家详细讲解有关Javascript中实现submit功能的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在js中,可以使用submit方法实现表单submit功能,语法格式为“form对...
    99+
    2023-06-15
  • android中NFC读写功能的实现方法
    本文实例为大家分享了android中NFC读写功能的具体代码,供大家参考,具体内容如下 首先检查一下设备是否支持NFC功能 private void checkNFCFuncti...
    99+
    2022-11-12
  • JQuery中的load()方法如何实现Ajax功能
    这篇文章主要为大家展示了“JQuery中的load()方法如何实现Ajax功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JQuery中的load()方法如何...
    99+
    2022-10-19
  • Android开发中实现手势识别功能的方法
    Android开发中实现手势识别功能的方法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。触摸交互中的概念常用事件首先要了解一些常用的事件: ACTION_DOWN:第一个手指按...
    99+
    2023-05-31
    android roi
  • WordPress中添加语音搜索功能的实现方法
    本文实例讲述了WordPress中添加语音搜索功能的实现方法。分享给大家供大家参考。具体分析如下: WordPress可以增加一个语音搜索功能,但是此功能暂时只能Chrome浏览器上使用,因为必须使用x-webkit-s...
    99+
    2022-06-12
    WordPress 添加 语音搜索 功能 实现方法
  • Android项目中实现滑动功能的方法有哪些
    本篇文章给大家分享的是有关Android项目中实现滑动功能的方法有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、Android坐标体系在讲解滑动之前,我们有必要简单提一...
    99+
    2023-05-31
    android roi 目中
  • node.js中实现kindEditor图片上传功能的方法教程
    前言 最近由于工作需要使用在线编辑器,找了几个对比了下KindEditor还是不错的,国产的但文档还是不全,还好能参考官方插件,kindEditor官网上中提供了ASP,ASP.NET,JSP相关的整合应用...
    99+
    2022-06-04
    图片上传 功能 方法
  • PHP中redis队列实现历史搜索功能的方法
    小编给大家分享一下PHP中redis队列实现历史搜索功能的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!redis队列实现历史搜索功能1、使用phpinfo()函数查看你的配置,匹配对应的...
    99+
    2022-10-18
  • Android开发中实现定时器功能的方法有哪些
    Android开发中实现定时器功能的方法有哪些?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、TimerTimer是Android直接启动定时器的类,TimerTask是...
    99+
    2023-05-31
    android roi
  • WORDPRESS文章中微信打赏功能的2种实现方法
    本文实例讲述了WORDPRESS文章中微信打赏功能的2种实现方法。分享给大家供大家参考,具体如下: 打赏功能功能就是给我们一些资助了,写博客不容易所以会给一些内容与说明了,下面我们就一起来看2种给WORDPRESS文章添...
    99+
    2022-06-12
    WORDPRESS 文章 微信打赏
  • Android开发中实现验证码倒计时功能的方法
    Android开发中实现验证码倒计时功能的方法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体代码如下所示:private TimerTask timerTask; p...
    99+
    2023-05-31
    android roi
  • android-support-design在Android开发中实现话框功能的方法
    这期内容当中小编将会给大家带来有关android-support-design在Android开发中实现话框功能的方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。效果图: 说明:在新版的and...
    99+
    2023-05-31
    android android-support-design pp
  • Android中用Bmob实现短信验证码功能的方法详解
     这篇文章主要介绍发送验证码和校验验证码的功能,用到一个第三方平台Bmob,那Bmob是什么呢?Bmob可以开发一个云存储的移动应用软件,他提供了大量的标准的API接...
    99+
    2022-06-06
    bmob 方法 验证码 短信验证码 Android
  • Spring MVC环境中文件上传功能的实现方法详解
    前言     我们在实际开发过程中,尤其是web项目开发,文件上传和下载的需求的功能非常场景,比如说用户头像、商品图片、邮件附件等等。其实文件上传下载的本质都是通过流的形式进行读写操作,而在开发中不同...
    99+
    2023-05-30
    spring mvc 文件上传
  • Android Studio中快捷键实现try catch等功能包含代码块的实现方法
     Android Studio中快捷键实现try catch等功能包含代码块1、windows系统下,只需选中需包含的代码块,按快捷键Ctry+Alt+T即可;2、Ubuntu下由于快捷键已经被占用,故需要自行重新设定,设定过程如...
    99+
    2023-05-30
    android studio 快捷键
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作