[英]Settimeout() doesn't wait. Why?
在上半部分,“if”中的两个settimeout
都正常工作。 然而settimeout
在下部,“else”里面的那些不等待。 据我所知,我在两个部分都以完全相同的风格编写它们。 可能是什么原因 ?
elementCopy.addEventListener('mouseleave',()=>{
elementCopy.classList.add('leavin');
setTimeout(() => { // THESE WORK PROPERLY
elementCopy.style.width = '36vw';
setTimeout(() => {
elementCopy.parentElement.removeChild(elementCopy);
}, 400);
}, 400);
})
}
else{
element.classList.add('card-active');
element.addEventListener('mouseleave',()=>{
element.classList.add('leavin-mob');
setTimeout(() => { // THESE DOESN'T
element.style.height = '38vh';
setTimeout(() => {
}, 400);
}, 400);
})
}
正如一位评论者指出的那样, setTimeout
不是一种sleep
方法。
setTimeout(() => {
element.style.height = '38vh';
}, 800);
如果以后需要,只需增加超时值。
为了进一步解释这一点,除非您在第二次超时中执行某些操作,否则嵌套setTimeout
很少见,您编写的代码本身可以正常工作,但没有任何内容可以执行 - 它也设置为 400 毫秒,这是一个非常小的时间。 您可以运行下面的代码以查看 4 秒后的第二次超时工作。
setTimeout(() => {
// THESE DOESN'T
console.log("This is 400ms!");
//element.style.height = '38vh';
setTimeout(() => {
console.log(
"This is 4 seconds but you usually would call something else here otherwise it has no effect or value"
);
}, 4000);
}, 400);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.