收藏
回答

app.js和第一个页面是异步执行的吗

我简单说明一下,我在app.js里的onLaunch方法里写了一个请求,在执行的第一个页面(由json定义的第一个页面)的加载页面函数写了一个console.log( res);,然后我经过多次执行发现,有时候是app.js先执行完成,有什么是首页的先执行,并不是我以为的要app.js先执行完成后才执行首页的。有什么办法可以让它先执行完app.js的代码然后再执行首页的吗


最后一次编辑于  2018-05-07
回答关注问题邀请回答
收藏

23 个回答

  • 陈
    2018-05-08

    感谢4楼,我去试一下,@6楼,我是因为在app.js里我写了登录方法,它要返回一个参数状态给我,我会根据这个判断要决定跳转那个页面

    2018-05-08
    赞同 1
    回复
  • Jake
    Jake
    2018-05-10

    helper.js,想需要你自己创建啊。

    我这边给你写一个简单的案例吧。

    文件一 app.js

    //app.js
    App({
      onLaunch: function () {
      },
        cache: {
            getuserid: function () {
                return wx.getStorageSync('loginuserid');
            }
        },
        wx:{
            request_post: function (url, data) {
                return new Promise(function (resolve, reject) {
                    wx.request({
                        url: url,
                        data: data,
                        method: 'POST',
                        header: { "Content-Type": "application/x-www-form-urlencoded" },
                        success: function (res) {
                            resolve(res)
                        },
                        fail: function (err) {
                            reject(err)
                        }
                    });
                });
            }
        }
    })


    文件二 helper.js

    //utils/helper.js
    var app = getApp();
    function weixinauth() {
        return new Promise(function (resolve, reject) {
            if (app.cache.getuserid() > 0) {
                resolve("无需登录")
            } else {
                wx.login({
                    success: function (res) {
                        if (!res.code)
                            return;
                        //##################################
                        app.wx.request_post('https://api.xxx.com/api/weixin/auth', {
                            code: res.code,
                        }).then(function (res) {
                            wx.setStorageSync("loginuserid", res.data.userid);
                            resolve(res.data)
                        }).catch(function (err) {
                            reject(err.data)
                        })
                        //##################################
                    }
                });
            }
            //##################################
        });
    }
    module.exports.weixinauth = weixinauth;


    文件三 index.js-------就是需要登录页面的调用

    // pages/index.js
    var helper = require("../utils/helper.js")
    var that;
    var app = getApp();
    Page({
      data: {
       
      },
        onLoad: function (options) {
            that = this;
            helper.weixinauth().then(function (resdata) {
                console.log("resdata");
                that.GoLoad();
            }).catch(function (errdata) {
                console.log("errdata");
            })
      },
        GoLoad:function(){
            //这里写加载页面的方法
            var userid = app.cache.getuserid();
            console.log("GoLoad");
        }
    })


    2018-05-10
    赞同
    回复
  • 陈
    2018-05-10

    我后面是打算这样做,之前我是怕它还是会发送多次请求,后来我思考了一下,可以用定时器,我的思路是这样的,在初始页面放一个定时器,每0.5秒扫描一次我登录的状态,然后登录状态符合要求了我才进去首页

    2018-05-10
    赞同
    回复
  • 不知道
    不知道
    2018-05-10

    正式页面之前添加一个初始化的页面,等待初始化完成,然后redirect加载要加载的页面,就像app的splash页面一样

    2018-05-10
    赞同
    回复
  • 陈
    2018-05-10

    是啊,这并不是解决方法,所以我给了他延迟加载。helper.js,是在那里呢

    2018-05-10
    赞同
    回复
  • Jake
    Jake
    2018-05-10

    你的这个难道不是每次都要判断的吗?你把登录方法用promise方法单独写在一个apihelper.js文件中,然后没有页面load的时候需要判断,就调用就可以了啊

    2018-05-10
    赞同
    回复
  • 陈
    2018-05-09

    之前我是这样做的,但是会出现一个问题,如果是首页先加载,那么它肯定会进入条件判断,这样就会多次执行APP。js的函数,

    2018-05-09
    赞同
    回复
  • Jake
    Jake
    2018-05-08

    为什么搞那么麻烦呢。你每个需要登录页page的load里面加一个判断不就可以了吗?

    2018-05-08
    赞同
    回复
  • 陈
    2018-05-08

    我设置2秒不是为了登录,而是为了让app.js里的执行完毕,因为我首页要进行判断值,这个值就是从app.js把值改变的,小程序的执行过程有问题,它应该等app.js执行完成后才执行首页的。

    2018-05-08
    赞同
    回复
  • 酱汁
    酱汁
    2018-05-08

    还有一个就是分享的情况,能分享的页面都要等待登录的话,不采取promise等操作咋玩。。

    楼主有好方法的时候记得分享一下哈

    2018-05-08
    赞同
    回复

正在加载...