hr-*_*tis 3 mocha.js async-await typescript es6-promise ecmascript-2017
我试图通过以下实现获得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));
    }
Run Code Online (Sandbox Code Playgroud)
_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);
})
Run Code Online (Sandbox Code Playgroud)
与消息
 sleep should sleep for 500 ms FAILED
    AssertionError: expected 2 to be at least 500
Run Code Online (Sandbox Code Playgroud)
我的理解是:sleep将等待,直到承诺来_sleep解决(根据setTimeout将在500ms后解决)
编辑
中的测试框架 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);
})
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           3995 次  |  
        
|   最近记录:  |