如下,想要执行 second()时,先执行完first(),再执行second()下面的逻辑
const first=()=>{ setTimeout(() => { console.log("需要第一次执行"); }, "2000"); } const second=()=>{ first() console.log("需要第二次执行"); } second()
复制
实际执行完的输出为:
原因:JS是单线程执行的,页面加载时,会自上而下执行主线程上的同步任务,当主线程代码执行完毕时,才开始执行在任务队列中的异步任务。
解决方法:使用callback回调,修改代码如下
const first=(callback)=>{ setTimeout(() => { console.log("需要第一次执行"); proxy.$nextTick(callback) }, "2000"); } const second=()=>{ first(()=>{ console.log("需要第二次执行"); }) } second()
复制
输入为: