UNPKG

583 BJavaScriptView Raw
1var slice = require('./slice')
2
3/**
4 * 创建一个只能调用一次的函数,只会返回第一次执行后的结果
5 *
6 * @param {Function} callback 函数
7 * @param {Object} context 上下文
8 * @param {*} args 额外的参数
9 * @return {Object}
10 */
11function once (callback, context) {
12 var done = false
13 var rest = null
14 var args = slice(arguments, 2)
15 return function () {
16 if (done) {
17 return rest
18 }
19 rest = callback.apply(context, slice(arguments).concat(args))
20 done = true
21 return rest
22 }
23}
24
25module.exports = once