微信小程序確保獲取到token值之后再執行請求


確保獲取到token值之后再執行請求,代碼的思路是,在app.js的封裝一個全局函數遞歸直到拿到了token值,拿到token值之后再去執行小程序要執行的第一個頁面的請求

  • 目錄結構

  

 

  • constant.js

  

 

 

  •  app.js
//app.js
import CONSTANT from './utils/constant';
let baseURL = CONSTANT.API_URL;
App({
    onLaunch: function(options) {
        
    },
    
    globalData: {
        userInfo: null,
    },
    // 在等待拿到token值之后才執行success方法
    verifyToken(success) {
        let token = wx.getStorageSync(CONSTANT.TOKEN);
        if (token) {
            let current = this;
            console.log("token存在.  進行校驗.");
            wx.request({
                url: baseURL + "/api/user",//隨便一個小巧的接口
                method: "GET",
                header: {
                    "token": token,
                    "version": CONSTANT.MINI_VERSION,
                },
                success: function(res) {
                    console.log("校驗結果:");
                    console.log(res.data);
                    if (21020000 === res.data.status) {
                        success && success();
                        // return;
                    } else {
                        token = null;
                        wx.removeStorageSync(CONSTANT.TOKEN);
                        setTimeout(() => {
                            current.verifyToken(success);
                        }, 300);
                    }
                },
                fail(err) {
                    console.log("校驗失敗...");
                    console.log(err);
                    token = null;
                    wx.removeStorageSync(CONSTANT.TOKEN);
                    setTimeout(() => {
                        current.verifyToken(success);
                    }, 300);
                }
            });
        } else {
            console.log("token不存在,正在重新拿token..");
            wx.login({
                success: res => {
                    console.log('code', res.code);
                    wx.request({
                        url: baseURL + "/api/user/login",
                        method: "GET",
                        header: {
                            "token": "",
                            "version": CONSTANT.MINI_VERSION,
                        },
                        data: {
                            code: res.code,
                        },
                        success: function(res) {
                            console.log("登錄成功,結果:");
                            console.log(res.data);
                            wx.removeStorageSync(CONSTANT.TOKEN);
                            if (21020000 === res.data.status) {
                                wx.setStorageSync(CONSTANT.TOKEN, res.data.data);
                                console.log('res.data.data', res.data.data);
                                token = res.data.data;
                                success && success();
                            }
                        }
                    });
                },
                fail: function(err) {
                    console.log("登錄失敗");
                    console.log(err);
                }
            });
        }
    },
})
  • 引用

  在小程序的第一個執行的頁面中

const app = getApp();
onLoad: function(options) {
        let that = this;
        app.verifyToken(function() {
            //獲取token之后要執行的函數
        });

    },

在下不才,有幸被看到,有哪里可以改進的,希望給點點意見

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM