在js中父组件获取子组件数据,但子组件的数据又是需要通过监听回调才能获取,如何等待回调结果返回才获取最新数据呢?

server/2024/11/29 9:41:31/

我这个问题我想大家都会经常遇到。

代码如下:

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 {

http://www.ppmy.cn/server/137630.html

相关文章

三周精通FastAPI:27 使用使用SQLModel操作SQL (关系型) 数据库

官网文档:https://fastapi.tiangolo.com/zh/tutorial/sql-databases/ SQL (关系型) 数据库 FastAPI不需要你使用SQL(关系型)数据库。 但是您可以使用任何您想要的关系型数据库。 这里我们将看到一个使用SQLModel的示例。 SQLModel是在SQLAlchemy和Pydantic的基础…

C++基础:string底层的实现

文章目录 1. 类的创建和简单函数的实现1.1 类的创建1.2 简单函数的实现 2.string增删查改的实现2.1 增加字符2.2 增加字符串2.3 任意位置插入删除字符字符串2.3.1 插入字符2.3.2 插入字符串2.3.3 删除字符/字符串 2.4 查找字符/字符串2.5 字符串的拷贝(C深浅拷贝的分析) 3. 字符…

基于SpringBoot的助农商超管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

git入门教程4:git工作流程

一、初始化仓库 新建或选择项目目录:首先,你需要在你的计算机上创建一个新的项目目录,或者选择一个已有的项目目录作为Git仓库的根目录。初始化仓库:打开终端(在Windows上可以是Git Bash),切换…

Python画图3个小案例之“一起看流星雨”、“爱心跳动”、“烟花绚丽”

源码如下: import turtle # 导入turtle库,用于图形绘制 import random # 导入random库,生成随机数 import math # 导入math库,进行数学计算turtle.setup(1.0, 1.0) # 设置窗口大小为屏幕大小 turtle.title("流星雨动画&…

chrome商店下载的插件转crx安装包

获取插件ID 2. 构造下载链接 https://clients2.google.com/service/update2/crx?responseredirect&oswin&archx64&os_archx86_64&nacl_archx86-64∏chromecrx&prodchannel&prodversion77.0.3865.90&acceptformatcrx2,crx3&xid%3D[插件ID]%…

React.js教程:从JSX到Redux的全面解析

文章目录 介绍react脚手架jsx语法和react组件jsx的基本语法jsx的行内样式jsx的类名classNameif条件渲染map循环渲染创建组件方法 可视区渲染 (React- virtualized)React-redux 介绍 javascript库,起源于Facebook的内部项目,类似于vue特点 声明式组件化 …

第二章:C语言基础(一)

作业 1> 打印输出一棵圣诞树 #include<stdio.h> int main(int argc, const char *argv[]) {printf(" * \n");printf(" ** \n");printf(" ******** \n"…