如何在ES2015中实现Node的emitter.removeListener?将回调添加到数组很容易:
let callbacks = [];
function registerCallback(handler) {
callbacks.push(handler);
});
如何在不返回某个函数标识符的情况下,稍后删除特定功能?换句话说,
unregisterCallback(handler)
不应需要任何其他参数,并且应删除该处理程序。 unregisterCallback
如何检查是否先前添加了匿名函数?运行
handler.toString()
(并潜在地对其进行哈希函数)是创建函数标识符的可靠解决方案吗?或者unregisterCallback
应如何迭代callbacks
以删除特定元素?(或在对象中找到适当的键或在集合中找到函数。)mySet.add(function foo() { return 'a'})
mySet.has(function foo() { return 'a'}) // false
setTimeout()
和setInterval()
返回一个标识符,而不是clearTimeout()
和clearInterval()
使用相同的函数。 - Dan DascalescusetTimeout
和setInterval
中使用函数本身会使得在多个计时器中使用同一函数变得更加困难。 - Denys Séguretif (~index)
到底是怎么工作的?我从未见过这种语法。 - matronator