如下,想要执行 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()
输入为: