vue中生命周期里多个promise运行的问题?
onActivated 和 onMounted 是 vue3 的生命周期,onMounted 是第一次打开会运行,onActivated 是跳转去时会执行,有一种场景下这两个生命周期都会运行,现在的问题是 await a() 在 onMounted 中运行时会有延时,所以有时候会在onActivated 执行时 onMounted 中的 await a() 还没执行完?这个问题怎么解决?
onActivated(async ()=>{
await b()
})
onMounted(async ()=>{
await a()
})回复
1个回答
test
2024-06-29
import { ref, onMounted, onActivated } from 'vue'
export default {
setup() {
const isAMounted = ref(false)
onMounted(async () => {
await a()
isAMounted.value = true
})
onActivated(async () => {
if (!isAMounted.value) {
return
}
await b()
})
return {}
}
}
2.
import { ref, onMounted, onActivated } from 'vue'
export default {
setup() {
let aPromiseResolve;
const aPromise = new Promise(resolve => {
aPromiseResolve = resolve;
});
onMounted(async () => {
await a();
aPromiseResolve();
});
onActivated(async () => {
await aPromise;
await b();
});
return {};
}
}
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容