JS数据驱动的定时器开关(可暂停)

JavaScript018

JS数据驱动的定时器开关(可暂停),第1张

原本我们若想将一个定时器暂停或清除,我们通常会用clearInterval()的方法。我们在setInterval时存储这个Interval的id,之后再需要暂停时通过id查找并清除该定时器(甚至需要记录请出时变化的数据),等到需要定时器继续运转我们就setInterval()在创建一次。

本次在大量使用定时器的过程中,为了优化繁琐的操作,我给定时器内部回调函数添加了数据驱动, 每个操作对应 一个常驻定时器 只在页面初始化时创建一次定时器,后续不再重新创建或释放

接下来我会举几个本次做的例子:

如果我们用传统释放定时器的方式,那么释放时我们还需记录运行时间,当前状态等。重新创建我们还需要把记录的值传递进去,不甚繁琐。

以上两个例子就是本次思想的精髓, 之后准备二次封装一个新的定时器,敬请期待

做完了: 数据驱动二次封装定时器工具类

球球你们看完点个赞吧。

Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。

Node.js 使用事件驱动模型,当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求。当这个请求完成,它被放回处理队列,当到达队列开头,这个结果被返回给用户。这个模型非常高效可扩展性非常强,因为 webserver 一直接受请求而不等待任何读写操作。(这也称之为非阻塞式IO或者事件驱动IO)在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时触发回调函数。

events事件模块:

只有一个模块,EventEmitter核心就是事件触发emite,和事件监听on

应用

(1)const event=require("events")模块

(2)new一个新的对象new evnet.EventEmitter()

(3)on("eventName",function(error,data){})创建监听器,一个事件可以创建多个监听

(4)emit("eventName")触发事件

(5)addListener("eventName",function(error,data){})也可以监听事件

(6)listenerCount("eventName")获取监听器个数,

getMaxListeners()//获取监听器数量;

setMaxListeners(n)//设置监听器数量;

eventNames() 获取当前触发器实例注册的所有事件名

listeners(事件名称)获取指定事件下的所有监听器

rawListeners(事件名称) 获取指定事件下的所有监听器

(7)移除监听事件的监听器;removeListener("eventName",fun),removeAllListener()off(事件名称,监听器名称)

(8)once():只触发一次,被移除;

(9)prependListener(事件名称,监听器):优先触发,事件监听器;

(10)prependOnceListener(事件名称,监听器) 触发一次 触发后移除

(11)EventEmitter.defaultMaxListeners = 8 每一个触发器实例 同一个事件最多绑定10个监听器 超出报警告

触发器实例上的内部事件

(1)订阅就会触发 newListener

myEmitter.on('newListener',(eventName,listener)=>{

console.log( 新增事件${eventName} ,listener)

})

(2)移除监听器会触发 removeListener

myEmitter.on('removeListener',(eventName,listener)=>{

console.log( 移除事件${eventName} ,listener)

})

事件触发,放在调用堆栈中;定时器结束时,函数会被放入“消息队列”中

事件循环会赋予调用堆栈优先级,它首先处理在调用堆栈中找到的所有东西,一旦其中没有任何东西,便开始处理消息队列中的东西。

setTimeout、fetch、或其他的函数是使用的是消息队列:回调函数放在调用堆栈的末尾;

promise,async/await函数使用的是作业队列:前函数结束之前 resolve 的 Promise 会在当前函数之后被立即执行。

process.nextTick(fun):事件循环进行一次完整行程时我们成为一个滴答,传入的函数则指示引擎在当前操作结束(在下一个事件循环滴答开始之前)时调用此函数:

回掉函数的第一个参数是err,如果正确返回null

区别是型号不同。

根据三菱电机参数资料,JS表示马达电机,JS系列电机,即鼠笼转子三相异步电动机。三菱电机新一代通用型伺服驱动系统MELSERVO-J5(简称MR-JH)。

电机是指依据电磁感应定律实现电能转换或传递的一种电磁装置。