Видовые поддельные таймеры и вложенное времяJavascript

Форум по Javascript
Anonymous
Видовые поддельные таймеры и вложенное время

Сообщение Anonymous »

У меня есть код, в котором SetTimeout вызывается неоднократно. По сути, обратный вызов One Settimout устанавливает еще одну и так далее. Я хотел бы проверить задержки с помощью vi.usefaketimers () , чтобы код был выполнен мгновенно, но я все еще могу проверить предполагаемые задержки.

Код: Выделить всё

import { describe, it, afterEach, beforeEach, vi } from 'vitest'

function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms))
}

async function countDown(timesLeft) {
while (timesLeft > 0) {
console.log("Counting down from " + timesLeft)
await sleep(1000)
timesLeft--
}
}

describe('countDown', () => {
beforeEach(() => {
vi.useFakeTimers()
})
afterEach(() => {
vi.useRealTimers()
})
it('works with runAllTimers', async () => {
const promise = countDown(2)
vi.runAllTimers()
await promise
})
})
Почему vi.runalltimers () немедленно не выполняет все тайм -ауты? Как я могу это исправить?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... settimeout

Вернуться в «Javascript»