nicejade / jadeblog-backups

The use of Gitalk, record the visitor comments on the blog(晚晴幽草轩) content.
https://www.jeffjade.com
5 stars 1 forks source link

你所不知道的setTimeout | 晚晴幽草轩 #85

Open nicejade opened 6 years ago

nicejade commented 6 years ago

https://jeffjade.com/2016/01/10/2016-01-10-javacript-setTimeout/

setTimeout详解

MontageD commented 6 years ago

总结得不错

nicejade commented 6 years ago

@MontageD 感谢你的肯定 🙌。

jiangyanghe commented 6 years ago

nicejade commented 6 years ago

setImmediate process.nextTick

window.setImmediate: 该方法用来把一些需要长时间运行的操作放在一个回调函数里,在浏览器完成后面的其他语句后,就立刻执行这个回调函数( 目前只有 Internet Explorer 10实现了该方法,可能不会被w3c批准成为标准);各浏览器支持情况,参见:caniuse setImmediate


在 Node.js 中,事件循环的每次迭代都称为 tick。 要调度在 Event 循环的下一次迭代中调用的回调函数,我们使用process.nextTick() 。它只需要一个没有时间限制的回调,因为它将在事件循环的下一次迭代中执行。

setTimeout() 和 process.nextTick() 之间的区别在于 process.nextTick() 函数特定于 Node.js 事件循环。 setTimeout() 使用JavaScript 运行时来安排自己的事件队列。使用 process.nextTick() 时,与事件关联的回调函数会在事件队列中的事件在单次迭代中处理后立即运行。与 setTimeout() 相比,由于与 setTimeout() 或JavaScript运行时相关联的队列,它更快。

function cb() {
  console.log('在下一次迭代中处理');
}
setTimeout(function() {
  console.log('执行 setTimeout Callback')
}, 0)
process.nextTick(cb);
console.log('在第一次迭代中处理');

//在第一次迭代中处理 //在下一次迭代中处理 //执行 setTimeout Callback

jinzunyue commented 5 years ago

给力啊,老妹

nicejade commented 5 years ago

@jinzunyue 话说,"老妹"这个是如何界定的呢?或者说,这是一个未曾听闻的梗?

xoyimi commented 3 years ago

分割耗时任务勘误:clearInterval() => clearTimeout()