我们来做一下测试:
测试一
测试一我们直接执行
async onLoad (options) {
console.log('执行onLoad')
},
async onShow () {
console.log('执行onShow')
}
发现确实是先执行的 onLoad 然后才是 onShow
测试二
测试二我们试试在 onLoad 中执行异步函数后,看看 onLoad 和 onShow 的执行顺序
const asyncFun = (time) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('执行异步函数了')
resolve()
}, time)
})
}
async onLoad (options) {
await asyncFun(100)
console.log('执行onLoad')
},
async onShow () {
console.log('执行onShow')
}
这里就算把异步函数 asyncFun 的参数调为 0,依然是下面的结果
我们再给测试二加点料,两个都执行异步函数,并且时间相同:
async onLoad (options) {
await asyncFun(100)
console.log('执行onLoad')
},
async onShow () {
await asyncFun(100)
console.log('执行onShow')
}
再加点料
async onLoad (options) {
await asyncFun(200)
console.log('执行onLoad')
},
async onShow () {
await asyncFun(100)
console.log('执行onShow')
}
说明虽然默认是先执行的 onLoad,但是如果有异步函数,那么就看哪个异步函数先执行完就先执行哪个。
测试三
如果 onLoad 中有个耗时比较长的同步函数,还是会等 onLoad 执行完再执行 onShow 吗?文章来源:https://www.toymoban.com/news/detail-506141.html
const syncFun = (length) => {
for (let i = 0; i < length; i++) {
console.log('i:', i)
if (i === length - 1) {
console.log('循环结束')
}
}
console.log('执行完成')
}
async onLoad (options) {
syncFun(1000)
console.log('执行onLoad')
},
async onShow () {
console.log('执行onShow')
}
文章来源地址https://www.toymoban.com/news/detail-506141.html
总结
- 一般情况下,onLoad 先执行
- 有异步的情况下,谁执行的快谁先执行
- 所以最好不要在 onLoad 和 onShow 里写一些有相关依赖的代码
到了这里,关于小程序:小程序中的onLoad和onShow谁先执行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!