typescript – async / await clarity,with sleep示例
发布时间:2020-12-15 04:38:54 所属栏目:Java 来源:网络整理
导读:我试图通过以下实现获得async / await的挂起但它没有按预期工作 public static async sleep(ms: number): Promisevoid { await Utilities._sleep(ms); } private static _sleep(ms: number): Promise{} { return new Promise((resolve: Function) = setTimeo
我试图通过以下实现获得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毫秒后解析promise,等待应该睡到那个时间.. 但是我的测试失败了 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的承诺得到解决(根据setTimeout将在500ms后解决) 编辑 摩卡的测试框架 解决方法
您还没有等待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); }) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |