上篇写了在uni-app中如何将js拆分出来,但是在实际的使用过程中却发现了一个严重的问题:在页面中使用拆分出的js时,会出现页面不能获取接口返回的数据的问题。
经过各种的baidu,发现出现这个问题的原因是uni-app中js的执行默认是异步的。那么该如何解决这个问题呢?
要解决它最简单的办法是将js设置为同步执行,在执行的方法上加两个关键字:async/await。拆分出的js中要添加,vue页面中调用拆分js的方法也要添加,这样才能使页面能够正确渲染出来;如果只是部分添加了页面还是照样获取不到接口返回的数据。
如:拆分出的js:async initPages(val) {
let resultMap = new Map();
let data;
let type="py";
if(val.type === "1"){
type = "bsh";
}
await getApp().$http.get("XXX",type).then(res=>{
var code = res.code;
var result = res.result;
if(code == "0"){
// this.dataList = result;
data = result;
console.log("home.js result = "+JSON.stringify(result));
}
})
console.log("home.js data = "+JSON.stringify(data));
return data;
},
vue页面中调用:
this.dataList = await pYList.initPages("XXX",type);
注:$http.get()是自已封装的网络请求,并注册为全局的函数。