我这个问题我想大家都会经常遇到。
代码如下:
let result = ''
async function stopGame(){console.log('游戏结束')return result
}function getMessage(ev){result = ev.data
}window.addEventListener("message",getMessage)
父组件通过await stopGame的方式调用子组件的这个函数,但是这个result却需要等监听消息到了才有。
方案一
我这边能想到的方案是,stopGame函数里也放一个监听,然后等数据返回之后再返回即可。最后将这个监听移除掉即可。
代码如下:
let result = '';
let messageReceived = false;async function stopGame() {console.log('游戏结束');// 返回一个 Promise,等待消息接收完成后再 resolvereturn new Promise((resolve) => {if (messageReceived) {resolve(result);} else {