前言
本系列使用 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!
复制代码
总结
该方法可看做一个延时函数,你可以制定延迟的时间,延迟执行的函数以及传入其中的参数。
相关链接:
本文章来源于午安煎饼计划Web组 - 残阳