文档章节

Node.js实战6:定时器,使用timer延迟执行。

o
 osc_zoa3moe9
发布于 2019/12/09 08:06
字数 411
阅读 11
收藏 0

精选30+云产品,助力企业轻松上云!>>>

setTimeout

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

一个简单的例子:

Node.js实战6:定时器,使用timer延迟执行
console.log( (new Date()).getSeconds() );
setTimeout(function(){

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

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

执行效果:

Node.js实战6:定时器,使用timer延迟执行

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

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

bind

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

Node.js实战6:定时器,使用timer延迟执行
function bomb(){
this.message = "bomb";
}

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

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

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

执行效果:

Node.js实战6:定时器,使用timer延迟执行

clearTimeout

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

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

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

将上面的代码稍做修改:

Node.js实战6:定时器,使用timer延迟执行
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,可以不停的按时间间隔循环执行。

Node.js实战6:定时器,使用timer延迟执行

执行效果:

Node.js实战6:定时器,使用timer延迟执行

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

Node.js实战6:定时器,使用timer延迟执行
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延迟执行
o
粉丝 1
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
time定时器模块

定时器模块,提供了定时器功能,是全局api,基于Node.js事件循环构建的。 分为immediate类,timeout类。主要方法有ref(),unref(),不要退出Node循环,要退出循环。 setImmediate(fun):微任务当...

猫头鹰的故乡
2019/01/26
5
0
node.js--全局对象

1、node.js概述 node.js基于谷歌的v8引擎(JS解释器),运行在服务器端的语言,基于JS 2、JS和NodeJS对比 (1)JS运行在浏览器端,存在兼容性问题;nodejs运行在服务器端,不存在兼容性问题 ...

wytao1995
2019/09/06
16
0
timer的优化故事

原作者:淘杰 前几天nodejs发布了新版本4.0,其中涉及到一个更新比较多的模块,那就是下面要介绍的timer模块。 timers: Improved timer performance from porting the 0.12 implementation, p...

_朴灵_
2018/05/14
0
0
从零开始再学 JavaScript 定时器

JavaScript 定时器 1.导读 在写 和 代码时,你是否有想过一下几点: 他们是怎么实现的? 面试时如果问你原理怎么回答? 为什么要了解定时器原理? 首先 和 都不是规范或者任何实现的一部分。...

Rick_Lee
2019/10/14
0
0
Node和浏览器之事件循环/任务队列/异步顺序/数据结构

前言 本文内容比较长,请见谅。如有评议,还请评论区指点,谢谢大家! >> 目录 开门见山:Node和浏览器的异步执行顺序问题 两种环境下的宏任务和微任务(macrotask && microtask) Node和浏览...

osc_7831jj0v
04/16
2
0

没有更多内容

加载失败,请刷新页面

加载更多

签到领金币模块

  最近做了一个签到模块的需求,主要就是签到,根据连签天数提供不同和奖励并在首页展示不同的文案。奖励分为金币和话费,话费也是通过金币的形式发放,但是有效期只有1天。 签到需求 每日...

osc_2frf70qv
24分钟前
17
0
正交多项式介绍及应用

1 正交多项式的定义 1.1 正交多项式定义 定义: 一个多项式序列 ${ {p_n}(x)} _{n = 0}^\infty $,其阶数为 \([{p_n}(x)] = n\) ,对于每一个 \(n\),这个多项式序列在开区间 \((a,b)\) 上关...

osc_mbhfa1vl
26分钟前
19
0
百万级别数据Excel导出优化

前提 这篇文章不是标题党,下文会通过一个仿真例子分析如何优化百万级别数据Excel导出。 笔者负责维护的一个数据查询和数据导出服务是一个相对远古的单点应用,在上一次云迁移之后扩展为双节...

osc_3g4j2ghj
27分钟前
21
0
Java 字符串比较、拼接问题

@ 目录 1.字符串的比较 1. 1 字符串常量池 1.2 String类型的比较方式 1.3 String的创建方式 1.3.1 直接使用“=”进行赋值 1.3.2 使用“new”关键字创建新对象 1.3.3 intern()方法返回的引用地...

osc_bjmmswh6
28分钟前
12
0
EJB到底是什么?(通俗易懂白话文)

1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业级开发",那么,总得说说什么是所谓的"服务 集群"和"企业级开发"吧! 这个问题其实挺关键的,......

onedotdot
29分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部