gpt4 book ai didi

javascript - 如何以 "await"为回调返回?

转载 作者:IT王子 更新时间:2023-10-29 02:52:33 26 4
gpt4 key购买 nike

当使用如下例中的简单回调时:

test() {
api.on( 'someEvent', function( response ) {
return response;
});
}

如何将函数更改为使用 async/await?具体来说,假设“someEvent”保证被调用一次且仅调用一次,我希望函数测试是一个异步函数,它在执行回调之前不会返回,例如:

async test() {
return await api.on( 'someEvent' );
}

最佳答案

async/await 并不神奇。异步函数是一个可以为您解包 Promise 的函数,因此您需要 api.on() 返回一个 Promise 才能工作。像这样:

function apiOn(event) {
return new Promise(resolve => {
api.on(event, response => resolve(response));
});
}

然后

async function test() {
return await apiOn( 'someEvent' ); // await is actually optional here
// you'd return a Promise either way.
}

但这也是一个谎言,因为异步函数本身也会返回 Promise,因此您实际上不会从 test() 中获取值,而是一个 Promise 的值,你可以像这样使用:

async function whatever() {
// snip
const response = await test();
// use response here
// snip
}

关于javascript - 如何以 "await"为回调返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37104199/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com