如何在函数内等待事件侦听器?

dem*_*dem 12 javascript asynchronous addeventlistener async-await

我正在尝试等待单击按钮,然后再继续执行另一个函数。

async function foo() {
    // code before
    await ??? // wait for start button to be clicked before proceeding
    // code after
}

startButton.addEventListener("click", function() {
    return new Promise(); // ???
}, false);
Run Code Online (Sandbox Code Playgroud)

如何在另一个函数中使用事件侦听器?

Joh*_*anP 6

你走在正确的轨道上returning a new Promise()。您可以按照以下方式做一些事情:

async function btnClick(btn) {
  return new Promise(resolve =>  btn.onclick = () => resolve());
}
Run Code Online (Sandbox Code Playgroud)

然后在你的调用代码中:

await btnClick(startButton);
Run Code Online (Sandbox Code Playgroud)