javascript - 使用 Promise 的内置方式,而不是添加事件监听器
问题描述
我有一些代码使用addEventListener
. 作为一个实验,我编写了一个包装器函数来包装带有承诺的任意事件监听器调用。可能有更好的方法来做到这一点。但是是否有一个原生 API 可以转换为 Promise 或使用 Promise 而不是回调来处理事件?显然,这是一个有点没用的例子,但是当添加一个新的事件处理程序时,是否存在一种方法可以在本机返回一个承诺?
function event(el, name) {
return new Promise(resolve => el.addEventListener(name, e => resolve(e)));
}
let url = URL.createObjectURL(blob)
let audio = new Audio();
//Promise way
event(audio, 'ended').then(e => {
URL.revokeObjectURL(url);
});
//Classic way
audio.addEventListener('ended', e => {
URL.revokeObjectURL(url);
});
audio.src = url;
audio.play();
解决方案
推荐阅读
- node.js - Nodejs - 删除重复项,对 AZ 进行排序
- sql - 雪花无法插入多行使用插入具有 md5 字段
- c# - NLog 没有将调试事件写入日志
- http - 无法在中间件中跟踪 HTTP 响应代码
- javascript - 我如何在 redux-saga 1 秒后调度?
- discord - 如何使用 Discord.js 获取谁在观看流媒体
- python - 有人可以解释这个列表理解的功能吗?
- android - Android - 房间迁移没有正确处理 CREATE 表
- react-native - 更改 FlatList 滚动条的颜色 react native
- linux - Windows 子系统 Linux sed 突击队无法通过 bat 文件工作