打个比方: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)不知道你是不是这个意思,如果是的话随便自己怎么写的吧。
添加回答
举报
0/150
提交
取消