请问如何将监听事件改为promise的形式
现在的代码结构是这样:
function receiver(type, callback) {
document.addEventListener(type, (ev) => {
callback(ev);
});
}
然后通过回调函数来执行:
receiver('click', (ev) => {
console.log(ev)
})
现在想改为promise的形式:
receiver('click').then(ev => {
console.log(ev)
})
请问需要怎么修改?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
Promise就像一个状态机,而且是一个状态不可逆的状态机,这就意味它只会在到达Fullfiled或者Rejected状态时会执行你注册的函数,所以用Promise实现是不合适的
但是可以写成这样以达成相似效果
简单的就是链式调用,回调函数放入fns中
Promise 是处理单次的情况,需要多次的话不能用 Promise,Rxjs 当然是最合适的选择,但要说这个代码改造的话,形式上还是可以(不是 Promise,只是像)
这样用
反正每调一次
receiver("click")
就会注册一次 click 事件,也可以改造一下变成一个:其实用起来也没啥区别,
Promise只能fulfilled一次,用rxjs吧
https://www.learnrxjs.io/lear...
https://rxjs-dev.firebaseapp....
普通函数返回
Promise