3.node中的nextTick、setTimeout和setImmediate

梯队

  • setTimeout/setImmediate 第二梯队
  • nextTick 最后一个梯队

所以:无论nextTick与setImmediate谁在前谁在后,一定是nextTick先执行

第二梯队setTimeout/setImmediate执行顺序

  • 谁先谁后都有可能

setTimeout/setImmediate/nextTick执行顺序,主要看node的eventLoop,后面会写。

nextTick、setImmediate和setTimeout回调函数中的this指向谁?

  • nextTick指向global
  • setImmediate指向Immediate对象
  • setTimeout指向Timeout对象

所以,我们一般写代码都用箭头函数,箭头函数中的this指向{},因为文件中的this是{}

setTimeout/setImmediate的传参

  • setTimeout从第三个参数开始都是传入第一个参数(函数)的参数
  • setImmediate由于没有时间参数,所以从第二个参数开始都是传入第一个参数(函数)的参数
    • 一般不定参用剩余参数符接收
setTimeout((...args) => {
  console.log(args)
}, 1000, 1, 2, 3)

setImmediate((...args) => {
  console.log(args)
}, 11, 22, 33)

node中箭头函数中是否有arguments?是都能打印出arguments?

  • 箭头函数中没有arguments
  • 箭头函数能打印出arguments

为什么箭头函数没有arguments还能打印出arguments?

因为node环境下箭头函数的arguments是外层的arguments。我们node环境下执行一个文件,该文件其实是被一个函数包裹的,打印的arguments其实就是包裹的函数的参数。

function(exports, require, module, __filename, __dirname){
  let fn = () => {
    console.log(arguments) // 这里的arguments就是exports, require, module, __filename, __dirname构成的类数组
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值