定时器的nexttick差异分析()和()setimmediateNode.js

定时器的nexttick差异分析()和()setimmediateNode.js
在1.node定时器的使用问题是不准确的。例如,setTimeout()设置任务执行后10ms,但9ms后,有一个任务占用5ms。当轮到定时器,它有延迟4ms ..

嗯,节点中的定时器就是这么说的。

2。看代码:

复制代码代码如下所示:

process.nexttick(函数(){()

console.log(延迟执行);

});

console.log(正常执行1);

console.log(正常执行2);

console.log(正常执行3);

console.log(正常执行4);
在这个例子中,我认为,很明显,你可以看到什么是nexttick()。它主要用于异步执行。

看代码:

复制代码代码如下所示:

setimmediate(函数(){()

console.log(延迟执行);

});

console.log(正常执行);
我们发现,也setimmediate是异步执行。

因此,nexttick之间的区别是什么()

看代码:

代码1:

复制代码代码如下所示:

process.nexttick(函数(){()

console.log(nexttick延迟)

});

setimmediate(函数(){()

console.log(setimmediate延迟);

});

console.log(正常执行);
结果:
代码的两:

复制代码代码如下所示:

setimmediate(函数(){()

console.log(setimmediate延迟);

});

process.nexttick(函数(){()

console.log(nexttick延迟)

});

console.log(正常执行);
结果:
发现代码顺序不一样,但结果是一样的。

结果可以从结果中找到:

的nexttick()回调函数执行比setimmediate较高优先级();

process.nexttick()属于闲置的观测器,setimmediate()属于检查观察。在每一轮循环检查中,空闲的观察员先于I/O观察员,I/O观察员先于检查观察员。

在具体的实现,对process.nexttick回调函数()是存储在一个数组,

对setimmediate结果()存储在链表。

在行为上,process.nexttick()执行所有的回调函数在每一轮周期阵列。

和setimmediate()回调函数在链表中每一轮循环执行。

复制代码代码如下所示:

2(nexttick) / /添加回调函数

process.nexttick(函数(){()

console.log(nexttick延迟执行1);

});

process.nexttick(函数(){()

console.log(nexttick延迟执行2);

});

两(setimmediate) / /添加回调函数

setimmediate(函数(){()

console.log(setimmediate延迟执行1);

process.nexttick(函数(){()

console.log(强插);

});

});

setimmediate(函数(){()

console.log(setimmediate延迟执行2);

});

console.log(正常执行);
从实施效果看:当第一(setimmediate)的回调函数执行后,并没有立即执行第二,但进入第二轮,再由nextTick()()setimmediate优先,执行命令后。这种设计的原因是确保每一个循环都能更快地完成。防止过多CPU和阻塞I/O调用。

这是关于定时器nexttick差异的信息()和()的setimmediate Node.js。这些人知道他们之间的区别吗

tag:差异电脑软件nextTickjssetimmediateNode

相关内容