使用 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中文网其他相关文章!