异步/等待清晰,以睡眠为例

2024-03-17

我试图通过下面的实现来掌握 async/await 的窍门,但它没有按预期工作

    public static async sleep(ms: number): Promise<void> {
        await Utilities._sleep(ms);
    }

    private static _sleep(ms: number): Promise<{}> {
        return new Promise((resolve: Function) => setTimeout(resolve, ms));
    }

_sleep将在 n 毫秒后解决承诺,并且等待应该sleep直到那个时候..

但我的下面的测试失败了

it("should sleep for 500 ms", ()=> {
    const date1 = (new Date()).getTime();
    Utilities.sleep(500);
    const date2 = (new Date()).getTime();
    chai.expect(date2 - date1).to.least(500);
})

有消息

 sleep should sleep for 500 ms FAILED
    AssertionError: expected 2 to be at least 500

我的理解是:sleep将等待直到承诺_sleep已解决(根据 setTimeout 将在 500 毫秒后解决)

EDIT

测试框架在mocha


你还没有等到你的sleep()调用(如用户@igor在您问题的评论中所述):

简化版:

async function sleep(ms: number) {
    await _sleep(ms);
}

function _sleep(ms: number) {
    return new Promise((resolve) => setTimeout(resolve, ms));
}

console.time('start')
sleep(500).then(() => {
    console.timeEnd('start')
})

// If your test runner supports async:
it("should sleep for 500 ms", async () => {
    const date1 = (new Date()).getTime();
    await sleep(500);
    const date2 = (new Date()).getTime();
    chai.expect(date2 - date1).to.least(500);
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

异步/等待清晰,以睡眠为例 的相关文章

随机推荐

  • 需要asp.net中的作业调度程序

    我们有一个网站 需要一个调度程序来在特定时间接收通知 电子邮件 例如 如果有人在下午 5 点设置提醒参加下午 4 45 的会议 则大约会在下午 4 45 收到电子邮件 由于此站点托管在共享服务器上 因此我们无法控制服务器来运行任何 SQL
  • 将 pdf 直接发送到打印机对话框的链接

    我尝试过以下2种方法 a class print a a Print file a 又一次尝试
  • Python 中的机械化 - 提交后重定向不起作用

    我刚刚开始在 Python 中使用 mechanize 但已经遇到了一些问题 我在 StackOverflow 和 Google 上查看过 我看到人们说文档很棒 并且应该很容易让它工作 但我想我不知道如何查找该文档 因为我所有的可以找到的代
  • [NSObject:任何对象]?' Xcode 6 beta 6 中没有名为“下标”的成员错误

    我使用下面的几行代码来获取键盘在屏幕上显示时的框架 我已经注册到UIKeyboardDidShowNotification通知 func keyboardWasShown notification NSNotification var in
  • 远程 RPC 客户端已解除关联。可能是由于容器超过阈值或网络问题。检查驱动程序日志中是否有 WARN 消息

    我正在开发 5 节点集群 每个节点 7 个核心 每个节点 25 GB 我当前的执行使用 1 2GB 输入数据 我能知道为什么会出现以下错误吗 我使用 pyspark 数据框 spark 1 6 2 Stage 9487 gt 198 2 2
  • 使用 BFS 进行加权图

    我正在修改单源最短路径算法 在视频中 老师提到BFS DFS不能直接用于查找最短路径 in a 加权图 我想每个人都知道这一点 并说自己找出原因 我想知道为什么它不能用于加权图的确切原因 解释 是由于边缘的重量还是其他原因造成的 有人可以解
  • 每个用户轨道的日期范围重叠

    如何使用下面的代码验证每个用户的日期 当我以其他用户身份登录时 我无法创建具有相同日期的预订 我有 user id 引用表 users 中的 id 我希望能够使 date start 和 date end 仅对用户唯一 并且仍然能够与不同的
  • 在 ARM 模板中引用 KeyVault 机密失败,并显示“模板中未定义资源”

    我正在尝试在 Azure Web 应用程序的 AppConfig 部分中创建 KeyVault 引用 KeyVault 引用引用了 KeyVault 中存在的机密 该密钥属于不同资源组 因此模板中不存在 根据文档 https learn m
  • 制作可前后移动的可定制 LCG

    我将如何让 LCG 伪随机数生成器的类型 在两个方向上移动 我知道前进是 a x c m但我怎样才能扭转它呢 我使用这个 所以我可以将种子存储在地图中玩家的位置 并能够通过在 LCG 中向后和向前传播 就像某种随机数线 来生成它周围的东西
  • 在 MVP 中,谁应该处理导航?

    我相信 Presenter 是负责处理 MVP 应用程序的导航方面的人 这是真的还是有例外 我认为视图是唯一负责屏幕导航的视图 Here https medium com nbarishok on navigation in android
  • 如何使用 Python 将 png 并排放置到 HTML 表格中

    我有一个 matplotlib 图转换为 png figure new savefig figure new png bbox inches tight pad inches 0 and a styler objectreport newt
  • 接受连续点的电子邮件的正则表达式

    这是我的正则表达式 a zA Z0 9 lt gt s lt gt s a zA Z0 9 0 9 1 3 0 9 1 3 0 9 1 3 0 9 1 3 a zA Z 0 9 a zA Z 2 例如 上述正则表达式接受电子邮件本地部分中的
  • 检查标志位java

    我的标志位有问题 我有一个int保存标志的变量 首先 我为该变量设置了一些标志 稍后我需要检查该变量中设置了多少个标志 但我不知道该怎么做 要检查是否设置了位值 int value VALUE TO CHECK OTHER VALUE TO
  • 检查 Java 字符串中的字母大小写(大写/小写)

    我遇到的问题是我无法让我的密码验证程序检查字符串以确保其中 1 个字符为大写字母 1 个字符为小写字母 它将检查整个字符串中的其中一个other 并根据正在检查的语句打印错误消息 我查看了这个网站和互联网来寻找答案 但找不到答案 这是家庭作
  • PHP 中 Trait 和抽象类的区别

    我最近遇到Traits http php net manual en language oop5 traits php在 PHP 中 我试图理解它们 在我的研究过程中 我偶然发现了这个 Stack Overflow 问题 特性与接口 htt
  • 在 NetBeans 7.1.1 中创建 UML 类图

    我想安装 启用 NetBeans 插件来创建和查看 UML 图 如图所示here http wiki netbeans org wiki images b b8 Vista Nimbus Uml Screenshot NBLookAndFe
  • Jackson 支持 java 8 Stream() 吗?

    我想用杰克逊的树模型 http wiki fasterxml com JacksonTreeModel使用 Java 8 流 API 如下所示 JsonNode jn new ObjectMapper readValue src JsonN
  • 如何在 CSS 中保留空格但忽略换行符?

    The white spaceCSS 3 中的属性有pre wrap值 它将保留空格和换行符 并在必要时换行 并且pre linevalue 它会折叠空白 但保留换行符 并在必要时换行 它能做什么not不过 有一个值果酱空白和崩溃换行 同时
  • C++ 中的最佳 XML 库,快速设置

    我想知道 C 中最好的 XML 库 我正在使用 Visual Studio 是什么 考虑到快速设置至关重要 基本上 我想创建一个文件来保存各种 avi 文件的注释 先感谢您 你应该能够得到TinyXML http www grinningl
  • 异步/等待清晰,以睡眠为例

    我试图通过下面的实现来掌握 async await 的窍门 但它没有按预期工作 public static async sleep ms number Promise