Я пытаюсь повесить 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 миллисекунд, а await следует 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 мс)
ИЗМЕНИТЬ
тестовая среда в mocha
Utilities.sleep(500);
См. github.com/jasmine/jasmine/issues / 923 - person Igor   schedule 25.05.2017async
функция - это просто функция, которая возвращает обещание. Вызов этого волшебным образом не превратит асинхронный код в синхронный. Непонятно, в чем вопрос. Это об асинхронной функции или тестах? Если первое, то тестовый пример не имеет значения. Если последнее, то вопрос отсутствует, даже не упоминается, какой фреймворк для тестирования вы используете. Так это о тестировании или об async / await? - person Estus Flask   schedule 25.05.2017sleep
в javascript - person harishr   schedule 26.05.2017sleep()
метод не добавляет значения по сравнению с_sleep()
. Оба они возвращают обещание, которое разрешается черезms
миллисекунды и может использоваться взаимозаменяемо. - person user3432422   schedule 26.05.2017