首页 > web前端 > js教程 > 正文

如何在 JavaScript 中使用 Async/Await 暂停回调的执行?

Susan Sarandon
发布: 2024-10-29 14:16:02
原创
494 人浏览过

How to Use Async/Await to Pause Execution for Callbacks in JavaScript?

使用 Async/Await 暂停回调的执行

处理回调时,可能需要暂停函数的执行,直到回调发生已返回一个值。在同步编程中,这可以通过像 join() 这样的阻塞机制来实现。然而,在异步编程中,这通常是不可取的。

假设你有一个保证只调用一次的回调函数,并且你想修改以下函数以使用 async/await:

test() {
  api.on( 'someEvent', function( response ) {
    return response;
  });
}
登录后复制

目标是将其转换为等待回调执行的异步函数,如下所示:

async test() {
  return await api.on( 'someEvent' );
}
登录后复制

单独使用 Async/await 无法实现此目的,因为它需要 api 返回 Promise 。在()。为了解决这个问题,我们可以将回调包装在 Promise 返回函数中:

function apiOn(event) {
  return new Promise(resolve => {
    api.on(event, response => resolve(response));
  });
}
登录后复制

现在,我们可以将 test() 重写为异步函数:

async function test() {
  return await apiOn( 'someEvent' ); // await is optional here (returns a Promise)
}
登录后复制

注意 async函数本身也会返回 Promise。要从 test() 获得实际结果,需要在外部异步函数中等待:

async function whatever() {
  const response = await test();
  // use response here
}
登录后复制

通过利用 Promise 包装函数,我们可以使用 async/await 来有效地暂停执行test() 直到回调返回一个值。

以上是如何在 JavaScript 中使用 Async/Await 暂停回调的执行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板