求问,怎么才能先执行app.js,执行完了,才执行page里的js呢
我想在app.js里用接口获取一个参数,用到page里面,显示在页面上,但是每次页面加载完了,app.js才获取到参数,这怎么办呢??
页面onLoad时,数据接口还没执行完,没有数据,获取不到
10 回复
没必要用定时器,可以加一个回调函数
例如:
if (app.xxx) { //判断有没有你要的 没有说明还没返回或者是失败了 //操作略 } else { //这个是时候我们在app的config里定义一个函数 给请求成功后调用 app.callback = () => { //操作略 这个和上面的操作是一样的 }; } |
app请求返回成功里这样写
if ( this .callback) { //这个函数名字和你定义的一样即可 this .callback() //执行定义的回调函数 } |
希望你能够看明白,
小程序的新建范例里面就有回调函数的用法:
onLoad: function () { console.log( 'index page on load log:' + Date()); if (app.globalData.userInfo) { this .setData({ userInfo: app.globalData.userInfo, hasUserInfo: true }) } else if ( this .data.canIUse){ // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 // 所以此处加入 callback 以防止这种情况 app.userInfoReadyCallback = res => { this .setData({ userInfo: res.userInfo, hasUserInfo: true }) } |