setTimeout

在nodejs中,通过setTimeout函数可以达到延迟执行的效果,这个函数也常被称为定时器。

一个简单的例子:

console.log( (new Date()).getSeconds() );setTimeout(function(){

 console.log( (new Date()).getSeconds() ); console.log("hello world");

//延迟一秒执行},1000);

执行效果:

可以看到,执行时,先输出了当时时间的秒数,过1秒后,输入出秒和hello world,间隔正是1秒。上面的参数中1000,单位是毫秒,即1秒。

在nodejs中,常用setTimeout来实现异步操作。

bind

还有一种高级的用法,看例程:

function bomb(){ this.message = "bomb";}

bomb.prototype.explode =function(){ console.log(this.message);}

var bomb = new bomb();setTimeout(bomb.explode.bind(bomb),1000);

即:使用bind可以确保这个方法绑定到正确的对象上,这样可以访问到这个对象的内部属性。

执行效果:

clearTimeout

通过clearTimeout函数,可以清除掉定时器。

比如说setTimeout设定了一个定时器,将在1秒后触发某个操作,如果在未触发之前,

clearTimeout函数取消这个定时器操作。

将上面的代码稍做修改:

function bomb(){ this.message = "bomb";}

bomb.prototype.explode =function(){ console.log(this.message);}

var bomb = new bomb();var timeoutid = setTimeout(bomb.explode.bind(bomb),1000);

//取消定时器clearTimeout(timeoutid);

这样,就不会触发1秒后的操作。

setInterval

setTimerout,会延时一定时间后执行一个操作,只执行一次。

而setInterval,可以不停的按时间间隔循环执行。

执行效果:

循环执行到什么时候呢?直到程序退出,或直到使用clearInterval()函数取消这个定时器。

console.log( (new Date()).getSeconds() );var interval_id = setInterval(function(){

 console.log( (new Date()).getSeconds() ); console.log("hello world");

},1000);clearInterval(interval_id);

本文参考资料:

 

Node.js实战6:定时器,使用timer延迟执行。的更多相关文章

  1. 《Node.js实战(双色)》作者之一——吴中骅访谈录

  2. iKcamp团队制作|基于Koa2搭建Node.js实战项目教学(含视频)☞ 环境准备

    安装搭建项目的开发环境 视频地址:https://www.cctalk.com/v/15114357764004 文章 Koa 起手 - 环境准备 由于 koa2 已经开始使用 async/await ...

  3. Node.js实战(二)之HelloWorld示例

    经过前面的Node.js实战(一)之概述 想必你应该对Node.js的概念.应用场景.优缺点等有个大致的了解,同时你本地Windows或者Linux上已经准备好了Node.js环境. 下面我们来进入每 ...

  4. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 错误处理

    沪江CCtalk视频地址:https://www.cctalk.com/v/15114923887518 处理错误请求 爱能遮掩一切过错. 当我们在访问一个站点的时候,如果访问的地址不存在(404), ...

  5. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 记录日志

    沪江CCtalk视频地址:https://www.cctalk.com/v/15114923883523 log 日志中间件 最困难的事情就是认识自己. 在一个真实的项目中,开发只是整个投入的一小部分 ...

  6. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 解析JSON

    视频地址:https://www.cctalk.com/v/15114923886141 JSON 数据 我颠倒了整个世界,只为摆正你的倒影. 前面的文章中,我们已经完成了项目中常见的问题,比如 路由 ...

  7. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 处理静态资源

    视频地址:https://www.cctalk.com/v/15114923882788 处理静态资源 无非花开花落,静静. 指定静态资源目录 这里我们使用第三方中间件: koa-static 安装并 ...

  8. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 视图Nunjucks

    视频地址:https://www.cctalk.com/v/15114923888328 视图 Nunjucks 彩虹是上帝和人类立的约,上帝不会再用洪水灭人. 客户端和服务端之间相互通信,传递的数据 ...

  9. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 代码分层

    视频地址:https://www.cctalk.com/v/15114923889408 文章 在前面几节中,我们已经实现了项目中的几个常见操作:启动服务器.路由中间件.Get 和 Post 形式的请 ...

  10. Node.js 实战 & 最佳 Express 项目架构

    Node.js 实战 & 最佳 Express 项目架构 Express Koa refs https://github.com/xgqfrms/learn-node.js-by-practi ...

随机推荐

  1. linux下docker启动nginx无法访问80端口

    问题: Linux安装了docker,docker启动了一个nginx容器,通过 80 端口无法正常访问 故障排查: 1.检查 nginx 容器启动的命令或者yaml文件,查看是否有跟本机端口进行绑定 ...

  2. 利用反射优化Servlet抽象出父类BaseServlet

    在编写servlet的时候发现每个servlet里面的doPost方法都如: protected void doPost(HttpServletRequest request, HttpServlet ...

  3. Linux压缩、解压

    gzip压缩: 归档,压缩,yourFloder文件夹生成yourName.tar.gz: - tar -zcvf yourName.tar.gz yourFloder 解压yourName.tar. ...

  4. zTree根节点默认打开

    1.在生成tree的json数据中,直接给出:open:true的属性; 2.treeObj.expandAll(true); 3.var zTree = $.fn.zTree.getZTreeObj ...

  5. windows 安装nodejs 和 npm

    1.从nodejs官网下载 安装文件,我安装的版本是  node-v10.15.0-x64.msi ,双击进行安装. 2.安装完成后可以查看相关目录,这里会有一个node_modules目录和node ...

  6. 【记录】java解析xml文件

    最近新需求要解析xml格式的日志文件,解析完之后数据库落地. 经过度娘搜索,写了demo,现记录如下: 测试XML <?xml version="1.0" encoding= ...

  7. cmd获取管理员权限等

    鼠标点点点的略过 可输入命令 runas /user:Administrator cmd 或 runas /noprofile /user:Administrator cmd Administrato ...

  8. Redis安装配置以及开机启动

    1.下载源码,解压缩后编译源码.  $ wget http://download.redis.io/releases/redis-2.8.3.tar.gz $ .tar.gz $ cd redis- ...

  9. CentOS安装Git服务器 Centos 6.5 + Git 1.7.1.0 + gitosis

    1.安装扩展 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel 2.下载git ...

  10. flask之url_for函数

    一:url_for函数 干什么的?传入函数名,得到函数的路由地址(访问视图函数的地址) from flask import Flask from flask import url_for app = ...