Interview icon indicating copy to clipboard operation
Interview copied to clipboard

Day363:等待event事件,返回promise,如果事件触发,则resolve,如果有error事件触发,则reject?

Open qappleh opened this issue 3 years ago • 2 comments

我们在封装 SDK 时,经常会遇到一类情况:需等待某个远程服务就绪,通常会通过 event 来触发 ready 或 error 事件, 现需要把它封装为更现代化的方式,支持 await 调用,如 `await awaitEvent(job, 'ready')。

*注意避免内存泄露

function awaitEvent(emitter, event) {
  // 待实现
};

qappleh avatar Apr 14 '21 02:04 qappleh

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;
};

geek-lu avatar Aug 04 '21 02:08 geek-lu

没太理解题意

geek-lu avatar Aug 04 '21 02:08 geek-lu