等待回调解析
使用简单回调的场景,如下例:
test() { api.on( 'someEvent', function( response ) { return response; }); }
将此函数转换为使用 async/await 需要稍作修改。假设“someEvent”保证只被调用一次,“test”函数可以转换为一个等待回调执行的异步函数:
async test() { return await api.on( 'someEvent' ); }
但是,async/await本身并没有能力直接处理回调。为了弥补这一差距,必须重新设计 api.on() 以返回 Promise。这是一个示例:
function apiOn(event) { return new Promise(resolve => { api.on(event, response => resolve(response)); }); }
经过此修改,“测试”函数现在可以编写为:
async function test() { return await apiOn( 'someEvent' ); }
请注意,在此上下文中,await 关键字本质上是可选的,因为任何一种方法仍然会导致返回 Promise。
最后,重要的是要记住异步函数本身会返回 Promise。因此,直接访问“test()”返回的值是不可能的。相反,需要处理返回的 Promise:
async function whatever() { // snip const response = await test(); // use response here // snip }
以上是如何在 JavaScript 中使用带有回调的异步/等待?的详细内容。更多信息请关注PHP中文网其他相关文章!