Lodash源码分析-delay.js

前言

本系列使用 lodash 4.17.4版本

此方法没有对其他方法进行引用

正文

源代码

/**
 * Invokes `func` after `wait` milliseconds. Any additional arguments are
 * provided to `func` when it's invoked.
 *
 * @since 0.1.0
 * @category Function
 * @param {Function} func The function to delay.
 * @param {number} wait The number of milliseconds to delay invocation.
 * @param {...*} [args] The arguments to invoke `func` with.
 * @returns {number} Returns the timer id.
 * @example
 *
 * delay(text => console.log(text), 1000, 'later')
 * // => Logs 'later' after one second.
 */
function delay(func, wait, ...args) {
  if (typeof func != 'function') {
    throw new TypeError('Expected a function')
  }
  return setTimeout(func, +wait || 0, ...args)
}

export default delay
复制代码

解析

参数

该方法可接受多个参数:

第一个参数是一个将被延迟执行的函数;

第二个参数是上一个参数将被延迟执行的毫秒数;

第三个以及之后的参数是第一个参数引用的参数,即将传入第一个函数参数的参数。

返回值

该方法返回带有延迟函数的定时器ID

方法解析

该方法首先会判断传入方法的第一个参数的类型是否是函数function类型,若不是会抛出一个错误表明传入该方法的第一个参数不是函数function类型,否则执行下一步。

之后该方法将返回一个定时器ID给调用该方法的地方。这个定时器会将传入该方法的第一个函数参数作为定时器将执行的函数,传入该方法的第二个参数作为定时器延迟执行其内函数的毫秒数,传入该方法的其余参数都将作为参数传入第一个函数参数。

示例
delay(function(val) { console.log(val) }, 1000, "I love Javascript!");
--> 1
------ 延迟 1000ms 后 ------
--> I love Javascript!
复制代码
总结

该方法可看做一个延时函数,你可以制定延迟的时间,延迟执行的函数以及传入其中的参数。

相关链接:

每日源码分析 - lodash(clamp.js)

每日源码分析 - lodash(slice.js)

每日源码分析-Lodash(uniq.js)

本文章来源于午安煎饼计划Web组 - 残阳

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值