js定时器只有在当前页面才会执行吗

JavaScript012

js定时器只有在当前页面才会执行吗,第1张

js定时器只有在当前页面才会执行。根据查询相关平台信息了解到,JS定时器是单线程,同一时间只能执行一个任务,其他任务就得排队,后续任务必须等到前一个任务结束才能开始执行。当前页面的任务只在当前页面执行,切换页面将执行下一个任务。

JS是单线程语言,减少了线程间切换的开销,且不用考虑锁的问题,因此适合IO密集型项目。

JS的单线程,其实指的是js主引擎线程的。除此之外还有定时器线程、异步http线程(ajax)等,最终通过Event Loop协调执行。

为了充分利用多核CPU,可以使用 worker_threads 实现多线程, child_process 或 cluster 实现多进程(master-worker模式)。

不同于浏览器中的 web worker ,nodejs中通过 worker_threads 实现多线程。通常在计算密集型场景中,才需要使用NodeJs多线程,因此使用场景较少。

electron中即经常使用该模块。

cluster 封装了 child_process.fork ,并内置了负载均衡,可有效实现多进程。

1.使用node-schedule在指定时间执行方法

var schedule = require('node-schedule')

var date = new Date(2017, 11, 16, 16, 43, 0)

var j = schedule.scheduleJob(date, function(){

console.log('现在时间:',new Date())

})

2.指定时间间隔执行方法 (扩展-->每秒执行就是rule.second =[0,1,2,3......59])

var rule = new schedule.RecurrenceRule()

rule.second = 10

var j = schedule.scheduleJob(rule, function(){

console.log('现在时间:',new Date())

})

3.每小时的固定时间

(每小时的40分钟执行)

var rule = new schedule.RecurrenceRule()

rule.minute = 40

var j = schedule.scheduleJob(rule, function(){

console.log("执行任务")

})