小程序
小游戏
企业微信
微信支付
扫描小程序码分享
如果onload里面有一个异步的request请求,那么onshow会等onload里的一步请求结束后再折行吗?还是和异步加载一起同时进行?
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
这个问题的答案应该是一定不会。
onLoad、onShow都是非阻塞的,小程序能保证的只是onLoad在onShow之前执行,不保证onShow的代码一定在onLoad的代码执行完才执行,哪怕是onLoad里用了await都没用。
async onLoad() { console.log('onLoad start') await new Promise((resolve, reject) => { setTimeout(function () { resolve(0) console.log('onLoad resolved') }, 3000) }) console.log('onLoad ended') }, async onShow() { console.log('onShow start') await new Promise((resolve, reject) => { setTimeout(function () { resolve(0) console.log('onShow resolved') }, 2000) }) console.log('onShow ended') },
上面的输出是:
onLoad start onShow start onShow resolved onShow ended onLoad resolved onLoad ended
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
既然是异步,那当然是request请求后就继续下一步了,是不管请求要做什么要执行多久的。
建议用回调。
当然不会
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
这个问题的答案应该是一定不会。
onLoad、onShow都是非阻塞的,小程序能保证的只是onLoad在onShow之前执行,不保证onShow的代码一定在onLoad的代码执行完才执行,哪怕是onLoad里用了await都没用。
async onLoad() { console.log('onLoad start') await new Promise((resolve, reject) => { setTimeout(function () { resolve(0) console.log('onLoad resolved') }, 3000) }) console.log('onLoad ended') }, async onShow() { console.log('onShow start') await new Promise((resolve, reject) => { setTimeout(function () { resolve(0) console.log('onShow resolved') }, 2000) }) console.log('onShow ended') },
上面的输出是:
onLoad start onShow start onShow resolved onShow ended onLoad resolved onLoad ended
既然是异步,那当然是request请求后就继续下一步了,是不管请求要做什么要执行多久的。
建议用回调。
当然不会