解决方法总体思路就是使用async+await , 使异步问题同步化 。 需要注意的是 , 这里需要借助Promise构造函数将uni.request封装一下 。 代码//API.jsgetAllClass:()=>{returnnewPromise((resolve,reject)=>{uni.request({url:BASE_URL+'class/getClassList',success:(res)=>{store.commit('setAllClass',res.data);resolve('suc');},fail:(err)=>{reject('err')}});})【使用async+await将uni-app中的异步请求同步化】可以看到 , 上述示例代码中 , getAllClass函数返回了一个Promise对象 , 而不是直接调用uni.request进行数据请求 。 这是因为await关键字(详见下面的代码)后必须跟Promise对象 , 否则不会阻塞之后代码的执行 。
//class.vue:initPage:asyncfunction(){awaitapi.getAllClass();//关键点this.getUserClassInfo(this.userInfo.selectedClass);}在上述initPage函数中 , 第3行api.getAllClass()执行完毕后 , 是第4行this.getUserClassInfo()才能获取到所需的数据 。 所以这里需要将异步问题同步化 。
总而言之 , 解决问题的关键点在于:
将uni.request请求封装在Promise构造函数中(使该api返回的是一个Promise对象)使用async+await
推荐阅读
-
种东西|网上买的小木桩,泡了半个月,都臭了,就是不长叶,真倒霉
-
-
-
#天天向上#看过那么多期《天天向上》,你知道第一期有谁吗?汪涵不在老婆在
-
阿妹的时尚屋|初冬时节,搭配紧身裤出行,时尚姑娘看起来不怕冷
-
-
蓓小西|王子文素颜嫩得像大学生,穿黑色外套配灰色围巾,演绎简约即高级
-
-
前沿观察员|7艘顶尖核潜艇浮出水面,俄罗斯真那么穷?原来骗了全世界
-
描写将士边疆生活的诗?描写边疆风貌戍边将士军旅生活的古诗
-
-
红网|七夕将至 在工地爱情故事中感受“钢”与“柔”
-
【面试】面试过关很难?十年资深HR告诉你,做好这3点,自己想不通过都难
-
老炮儿联盟|如果没有那么多意难平就好了”,老炮儿联盟制作组有话说:“Uzi退役
-
袁姗姗|女星许愿造型谁最美?杨幂像个睁眼瞎,佟丽娅充满古典美!
-
@兰州发布|兰州发现进口冷冻虾内包装核酸阳性,32名密接人员已被隔离
-
上海松江区政府|我区大型“食、宿、游”企业消费维权培训会结束法律培训惠及32家餐旅企业
-
洋哥爱生活|愿得一人心,白首不分离,3星座穿越人潮,终寻回今生挚爱,1周后
-
|这个女人劳苦功高,王健林即将王者归来?8千亿负债减到1500亿
-
文一地产|文一集团:顺应市场调控 积极布局多元化发展