演示:"https://stackblitz.com/edit/vitejs-vite-nfngmd?file=src%2Fcom..." (https://link.segmentfault.com/?enc=zFRQZTZ3iA5b7bLjXNcScg%3D%3D.6oE7NWUSRix0UUi63NfB77jlrzoqT5SkbMmKBMIkDYZvKwUdx9ueMdaSpqPprJzbFinVO1Ck2IzK%2BqjFOrMx1aN4SDb8r89SkYynOj1flew%3D) «点最底部按钮:1 和 2,文件名 "/src/com/TestCom.tsx"» *** 先看一段简单的代码: console.log(1); setTimeout(() => console.log(2), 0); new Promise((resolve) => { console.log(3); resolve(4); }).then((num) => console.log(num)); setData(() => { console.log(5); return { a: Date.now() }; }); console.log(6); 这段顺序执行如下: * 1、3、6,是上下文 * 4、5,是微任务 * 2 是宏任务 也就是:1、3、6、4、5、2 *** 现在代码不变将其全部包裹在 "setTimeout" 这个宏任务里 setTimeout(() => { // 上面的代码 }, 0); 这个时候发现 "setState" 是最后执行,即:1、3、6、4、2、5 *** 在上面演示中 "TestCom.tsx" 中有两个方法:"clickHandle" 和 "clickTimeooutHandle" * 最终都是执行 "clickHandle" * 不同的是 "clickTimeooutHandle" 将 "clickHandle" 包裹在 "setTimeout" 中执行 这里会有 2 个不同点 第一个不同:只点按钮 1,初始化和之后每次点击不同 * 初始化输出:1、3、5、6、4、2 * 之后每次点:1、3、6、4、5、2 第二个不同:按钮 1 和按钮 2 不同 * 按钮 1:1、3、6、4、5、2 * 按钮 2:1、3、6、4、2、5 请问这是怎么回事呢?
"1721008965149.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240920/03c2f2de6abb752b53c657c1b8bb88d4.png) clearInterval也可以清除掉setTimeout吗? var a = setTimeout(() => {console.log(111)}, 10000) clearInterval(a)
大佬们求助 vue-router在mounted中,没有用户交互情况下,执行router.push ,无法返回当前页面,没有当前页面的历史记录,用户点击跳转就可以 mounted(){ setTimeout(()=>{ this.$router.push('/my') },2000) },
背景: React代码如下 import { useState } from 'react'; export default function App() { const [count, setCount] = useState(0); const handleClick = () => { setCount(count + 1); setTimeout(() => { console.log(count, 'end'); // 还是 0! }, 5000); } return ( +1 {count} ); } setCount的更新是异步更新的,setTimeout也是异步的,为什么点击,console.log打印的是0,而不是1。 尝试: 尝试用普通js函数进行比较,js代码如下 function outerFunction() { let count = 0; function innerFunction() { console.log(count); } count = 1; // 将count更新为1 setTimeout(innerFunction, 5000); count = 2; } outerFunction(); console.log打印的是最新的值2。 疑问: 两段代码的打印结果不同,是什么原因呢?
uni-app中vue3 使用ref获取dom对象,获取不到 "image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241031/8533ba4b028a7440e4b15200d04c0188.png) myButton.value一直为null,不知道什么原因,求助 试过nextTick,setTimeout都没用。