У меня есть две версии функции сна, одна ожидает разрешения, другая - нет:
function sleephelper1(ms) {
return new Promise(function(resolve) {
setTimeout(() => resolve('done'), ms);
})
}
function sleephelper2(ms) {
return new Promise(function(resolve) {
setTimeout(resolve('done'), ms);
})
}
Затем я вызываю sleephelper1 или sleephelper2:
async function test(){
var test = await sleephelper1(3000);
console.log(test)
console.log("exit test function")
}
test()
Первый ждет 3 секунды, прежде чем решит. Но sleephelper2 не работает должным образом. Код выполняется немедленно. Я думал, что SetTimeout может задержать вызов функции на определенный промежуток времени. Разрешение () не является функцией? Я обнаружил, что этот пост JavaScript обещание разрешается с помощью setTimeout , и это именно то, о чем я здесь прошу, за исключением того, что я использую asyn c await. Также я не получил объяснения. Может ли кто-нибудь объяснить мне, почему это ведет себя так, как это происходит?