ts中异步等待目标生成的办法

2023-11-13

async,promise,setimeout配合就行。其它有sleep的语言更简单

/**
     * 异步等待对象的生成,对象生成完成返回生成的对象
     * @param getter 对象的获取函数
     * @param checkSize 检查粒度,ms
     * @param timeout 超时时间, ms
     */
export const asyncCheck = async<T> (getter: () => T, checkSize = 100, timeout = 1000) => {
    return new Promise<T>(x => {
        const check = (num = 0) => {
            const target = getter();
            if (target !== undefined && target !== null) {
                x(target)
            } else if (num > timeout / checkSize) {// 超时
                x(target)
            } else {
                setTimeout(() => check(++num), checkSize);
            }
        };
        check();
    });
}
let input = await asyncCheck(() => document.querySelector("#input"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ts中异步等待目标生成的办法 的相关文章

随机推荐

  • Pyqt5设置窗口的背景

    Pyqt5设置窗口的背景 一 使用setStyleSheet 函数设置窗口背景 二 使用QPalette设置窗口背景 三 通过资源文件设置窗口背景 一 使用setStyleSheet 函数设置窗口背景 在使用setStyleSheet 函数
  • JS:概述、使用方式、数据类型、运算符和流程控制语句

    什么是JS JavaScript是一门客户端轻量级脚本语言 它不需要编译 直接就可以被浏览器解析执行 每一个浏览器都有JS的解析引擎 该语言用来控制html元素 让界面有一些动态的效果 增强用户和html页面的互动 1992年 Nombas
  • 开关电源的八大损耗

    开关电源的八大损耗 沙漠的甲壳虫的博客 CSDN博客 开关电源的损耗大部分来自开关器件 MOSFET 和二极管 另外小部分损耗来自电感和电容 但是 如果使用非常廉价的电感和电容 具有较高电阻 将会导致损耗明显增大 选择IC 时 需要考虑控制
  • 国际网络专线:连接全球的数字高速公路

    国际网络专线是一种高速 可靠的网络服务 可以连接全球各地 为企业提供快速的数据传输和通信 随着全球化的发展和信息技术的不断进步 越来越多的企业需要跨越国界进行商务活动和数据传输 国际网络专线成为实现这一目标的重要途径之一 国际网络专线通过使
  • python如何输出一个数组_使用Python实现分别输出每个数组

    使用Python实现分别输出每个数组 我就废话不多说了 直接上代码吧 a 1 2 3 4 5 6 7 a b c i 0 while i print a i i 1 a 1 2 3 4 5 6 7 a b c for i in range
  • 特征值处理-机器学习

    综述 如上图所示是一个经典的机器学习问题框架图 数据清洗和特征挖掘的工作是在灰色框中框出的部分 即 数据清洗 gt 特征 标注数据生成 gt 模型学习 gt 模型应用 中的前两个步骤 灰色框中蓝色箭头对应的是离线处理部分 主要工作是 从原始
  • C/C++调用前缀

    今天写线程函数时 发现msdn中对ThreadProc的定义有要求 DWORD WINAPI ThreadProc LPVOID lpParameter 不解为什么要用WINAPI宏定义 查了后发现下面的定义 于是乎需要区别 stdcall
  • 在Google地图中显示行政区边界

    不知道从什么时候开始 在Google地图或是百度地图中用城市或者省名称搜索的时候 你会发现地图上会勾勒出搜索的行政区的轮廓来 这个功能非常人性化 比如在百度地图中搜索 广西 地图显示如下图所示 在Google地图中搜索 桂林 会定位到桂林市
  • LaTex如何设置表格列宽以及居中格式

    用LaTex写论文时 被一个表格困扰好久 不过终于找到解决方法 代码放在这里方便以后查询 begin table h caption 符号说明 centering begin tabular p 3cm lt centering p 7cm
  • 做事变通

    author skatetime 2010 05 21 做事变通 昨天同事找我 说bi系统的有一个递归树形查询的sql非常慢 已经让使用人员无法忍受 sql如下 SELECT SYS CONNECT BY PATH BB FULL NAME
  • ARM体系结构与接口技术:UART总线概念、串口总线的硬件连接及通信协议

    一 总线相关的概念 1 1 串口总线相关的概念 总线 连接多个部件的信息传输线 是各部件共享的传输介质 UART 通用的异步接收器和发送器 串口主要是被用来实现两个设备之间通信的 1 2 串行总线和并行总线 串行通信 指的是同一时刻只能收或
  • 【事件驱动】【数码管识别】(C++多线程实现多幅图像的同步识别)

    一 问题的背景 二 问题的解决方法和思路 三 程序实现 四 遇到的问题 五 后续的工作
  • 刷脸支付方式的改变可谓是变化巨大

    支付方式变迁带来生活方式改变 足不出户就能缴水电费 出门打车 掏出手机扫一扫出租车上的二维码 轻松支付车费 下馆子吃饭 手机上的二维码被收银员扫码枪扫了后金融市场 因为现在的中国人出门不用携带现金 掏出手机扫一扫二维码就能就能完成一笔交易
  • Spring Cloud Config+Bus:实现动态刷新配置文件

    如果需要实现修改远端仓库里的配置文件的信息 对应的配置信息的客户端也能动态的刷新配置信息 而不要重新启动程序 那么需要引入消息中间件 我这里使用的是RabbitMQ 还有微服务和RabbitMQ进行通信的Spring Cloud Bus C
  • 【H5】 两种屏幕宽度大小自适应方式

    H5 两种屏幕宽度大小自适应方式 第一种 由于rem是获取html根属性的字体大小 改变html的字体大小 通过rem设置所以样式的宽高 rem为html的字体大小 通过改变html的字体大小达到适配的效果 remChange 监听屏幕改变
  • 【VQ-VAE代码实战】Neural Discrete Representation Learning

    VQ VAE代码实战 Neural Discrete Representation Learning 0 前言 1 简介 2 Basic Idea Loss 3 代码 Load Data Vector Quantizer Layer Enc
  • 通过js把具有相同属性的对象的值进行合并,并生成新的数组对象的方法。

    通过js把具有相同属性的对象的值进行合并 并生成新的数组对象的方法 在日常开发的时候 我们有时候会遇到这样的需求 要求把具有相同属性名的对象进行合并 如下例子所示
  • 开发人员与测试人员关系的理解

    在软件开发中都会有开发人员 以下简称开发 和测试人员 以下简称测试 在一些小型公司可能并没有测试 仅仅是开发兼任测试 在这里我仅针对于有专业的测试和专业的开发的项目 每个公司应该都有考核机制 对于开发和测试的考核实际上很难量化 通常来讲大的
  • 20230829

    把list的相关函数都实现出来 include
  • ts中异步等待目标生成的办法

    async promise setimeout配合就行 其它有sleep的语言更简单 异步等待对象的生成 对象生成完成返回生成的对象 param getter 对象的获取函数 param checkSize 检查粒度 ms param ti