const a = (): Promise => { return new Promise((resolve) => { const callback = (mutations: MutationRecord[]) => { // 监听按钮的某个属性变化,此处退出函数 resolve(); }; const observer = new MutationObserver(callback); observer.observe(buttonEl, { attributes: true, }); // 调用一个Promise函数,成功后触发按钮的点击事件,然后监听按钮的属性变化 p().then(() => { buttonEl.click(); }); }); }; const b = async (): Promise => { const callback = (mutations: MutationRecord[]) => { // 监听按钮的某个属性变化,怎么在此处退出函数? }; const observer = new MutationObserver(callback); observer.observe(buttonEl, { attributes: true, }); // 调用一个Promise函数,成功后触发按钮的点击事件,然后监听按钮的属性变化 await p(); buttonEl.click(); }; 如上述示例代码,`a`是常规的Promise写法,现在想要改成`b`那样的async写法,请问该怎么办? 想要这么改的原因是函数内部的逻辑逐渐复杂,会调用多个Promise函数,常规写法会陷入层层嵌套的窘境,不利于维护。