我想制作一个 CoffeeScript 函数,即使它被多次调用,它的效果也只运行一次。
其中之一,还是另一种方式是制作一次可调用函数的好方法?额外do
是一个问题还是实际上更好?
once_maker_a = (f)->
done=false
->
f.call() unless done
done=true
once_maker_b = (f)->
do(done=false)->
->
f.call() unless done
done=true
oa = once_maker_a(-> console.log 'yay A')
ob = once_maker_b(-> console.log 'yay B')
oa()
yay A #runs the function passed to the once_maker
undefined #return value of console.log
oa()
undefined #look, does not reprint 'yay A'
ob()
yay B
undefined
ob()
undefined
我知道http://api.jquery.com/one/和http://underscorejs.org/#once但在这种情况下使用这些库不是一种选择。