异步编程中如何优雅地从回调函数退出async/await操作?

异步编程中如何优雅地从回调函数退出async/await操作?

异步编程中优雅地处理回调函数退出

本文探讨在使用async/await时,如何有效退出由回调函数触发的异步操作。 问题源于将基于Promise的回调函数改写为async/await风格,以避免嵌套回调导致的代码混乱。

原始代码使用MutationObserver监听按钮属性变化,并在回调函数中使用resolve结束Promise。然而,在async/await环境下,直接在回调函数中使用resolve并非最佳方案。

问题代码示例:

const a = (): Promise<void> => {  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<void> => {  const callback = (mutations: MutationRecord[]) => {    // 监听按钮属性变化,如何在此处退出函数?  };  const observer = new MutationObserver(callback);  observer.observe(buttonEl, { attributes: true });  await p();  buttonEl.click();};

登录后复制

本文来自互联网或AI生成,不代表软件指南立场。本站不负任何法律责任。

如若转载请注明出处:http://www.down96.com/tutorials/12799.html

热心网友热心网友
上一篇 2025-04-11 17:06
下一篇 2025-04-11 17:06

相关推荐

本站[软件指南]所有内容来自互联网投稿或AI智能生成,并不代表软件指南的立场。