我试图通过下面的实现来掌握 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(使用前将#替换为@)