为了账号安全,请及时绑定邮箱和手机立即绑定

[JS] 怎样实现非HTML元素的事件委托?

[JS] 怎样实现非HTML元素的事件委托?

慕姐4208626 2019-05-13 13:43:17
打个比方:constxhr1=newXMLHttpRequest();constxhr2=newXMLHttpRequest();通行的做法是分别给两个xhr添加事件监听器,但如果事件监听器都相同的话,非常繁琐而且容易出错。所以我想到了DOM树上的事件委托,似乎也是用来处理这种监听器相同的场景的。但是对于不在DOM树上的非HTML元素,请问应该怎么做?parent.addEventListener//parent写啥?EventTarget.all([xhr1,xhr2]).addEventListener//存在类似的函数吗?可能这么解释更好一点,我想要的是Promise.all的事件版,或者Observable.merge的所有事件版,或者能达成相同功能的方法或hack。请问应该怎么做?多谢回答。
查看完整描述

2 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

functionmyEvent(){
this.tasks=[];
this.on=(name,cb)=>{
this.tasks.push({name,cb})
}
this.emit=(name)=>{
letts=this.tasks.filter((t)=>t.name==name)
ts.forEach(({cb})=>{cb();})
}
}
lettest=newmyEvent();
test.on('hhh',()=>{console.log('dosomething')})
setTimeout(()=>{
test.emit('hhh')
},1000)
不知道你是不是这个意思,如果是的话随便自己怎么写的吧。
                            
查看完整回答
反对 回复 2019-05-13
  • 2 回答
  • 0 关注
  • 268 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信