Published on

nodejs 死循环写法

Authors

所有代码都写在index.js中

nodejs 是异步执行的,要理解异步有点困难,简单理解就是每个系统调用的函数调用完就结束了,返回值会传入回调函数。所以跟c语言,go语言等编程思维不同。

天生异步,类似与多线程,每个系统调用都是同时进行(简单理解,底层肯定不是这样的)。

setInterval

使用setInterval函数

function run(){
  do something...
}
setInterval(run, 10)

node最小间隔是 每10毫秒执行一次,时间不精确,会被其他任务占用定时计数

函数递归调用

function run(){
do something...
run()
}
run()

函数递归调用自身,会一直执行,但是无法响应其他js的事件

setImmediate 或者 process.nextTick

将任务放入时间循环队列尾端,让任务立刻执行 process.nextTick的优先级比setImmediate 更高,更底层

function run(){
console.log("a")
setImmediate(run)
}
setImmediate(run)
function run(){
console.log("a")
process.nextTick(run)
}
process.nextTick(run)

contract-sol/sniper-eth.ts at dev · JcobCN/contract-sol (github.com) 递归函数 vs setInterval vs setTimeout javascript - SegmentFault 思否