Interview
Interview copied to clipboard
Day363:等待event事件,返回promise,如果事件触发,则resolve,如果有error事件触发,则reject?
我们在封装 SDK 时,经常会遇到一类情况:需等待某个远程服务就绪,通常会通过 event 来触发 ready 或 error 事件, 现需要把它封装为更现代化的方式,支持 await 调用,如 `await awaitEvent(job, 'ready')。
*注意避免内存泄露
function awaitEvent(emitter, event) {
// 待实现
};
function awaitEvent(emitter, event) {
let pms = new Promise((res, rej) => {
emitter.on(event, (...arg) => {
res(...arg);
pms = null;
})
emitter.on('error', err => {
rej(err);
pms = null;
})
})
return pms;
};
没太理解题意