加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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);
})

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读