栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

nextTick vs set立即,直观的说明

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

nextTick vs set立即,直观的说明

考虑以下两个示例:

setImmediate

setImmediate(function A() {  setImmediate(function B() {    log(1);    setImmediate(function D() { log(2); });    setImmediate(function E() { log(3); });  });  setImmediate(function C() {    log(4);    setImmediate(function F() { log(5); });    setImmediate(function G() { log(6); });  });});setTimeout(function timeout() {  console.log('TIMEOUT FIRED');}, 0)// 'TIMEOUT FIRED' 1 4 2 3 5 6// OR// 1 'TIMEOUT FIRED' 4 2 3 5 6

nextTick

process.nextTick(function A() {  process.nextTick(function B() {    log(1);    process.nextTick(function D() { log(2); });    process.nextTick(function E() { log(3); });  });  process.nextTick(function C() {    log(4);    process.nextTick(function F() { log(5); });    process.nextTick(function G() { log(6); });  });});setTimeout(function timeout() {  console.log('TIMEOUT FIRED');}, 0)// 1 4 2 3 5 6 'TIMEOUT FIRED'

setImmediate回调从事件循环中触发,每次迭代按排队的顺序进行一次。因此,在事件循环的第一次迭代中,将触发回调A。然后,在事件循环的第二次迭代中,将触发回调B,然后在事件循环的第三次迭代中,将触发回调C,以此类推。这样可以防止事件循环被阻塞,并允许其他I
/ O或计时器回调在平均时间中调用(与0ms超时的情况相同,它在第1次或第2次循环迭代中触发)。

但是,总是在执行完当前代码之后并返回事件循环之前立即触发nextTick回调。在nextTick示例中,在返回事件循环之前,我们最终执行了所有nextTick回调。由于将从事件循环中调用setTimeout的回调,因此直到完成每个nextTick回调后,才会输出文本“
TIMEOUT FIRED”。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/391100.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号