猿问

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

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

蝴蝶不菲

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)不知道你是不是这个意思,如果是的话随便自己怎么写的吧。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答