Если вы хотите сделать это с помощью await, вы должны сделать функцию асинхронной, иначе она выдаст синтаксическую ошибку, ожидая, что она не будет работать с использованием обычных функций.Вот пример того, как выполнить то, что вы пытаетесь сделать асинхронно.
sleep = async (ms) => {
await new Promise((resolve, reject) => setTimeout(resolve, ms));
}
onClick = async () => {
console.log('first task')
// wait 2 seconds
await sleep(2000);
console.log('second task')
}
onClick()
Однако для этого варианта использования вам может не потребоваться выполнять это асинхронно.Использование setTimeout()
кажется асинхронным, но он работает одновременно в фоновом режиме и использует меньше памяти - асинхронные функции прерывают синхронный поток, но они не обязательно выполняются в параллельном порядке.В вашем случае лучше всего использовать функцию обратного вызова.
/**
* Basic example updating a string
* In your case, the callback function would be adding and removing whatever you
* needed to in the second half of your function
*/
let word = 'init'
function sleep (callback, ms) {
setTimeout( () => {
word = 'updatedWord'
callback()
}, ms)
}
sleep(function () {
alert(word)
}, 2000)