微信小程序請求封裝(Promise解決異步請求)

最開始 代碼是小程序

//network.js

function POST(url,params) {
    wx.request({
        url: url,
        data: params,
        method: 'GET',
        success: function (res) {
            console.log('返回結果:')
            console.log(res.data)
            return res.data
        }
    })
}

//login.js
const network = require('../../../utils/network.js');
...
//登陸
login: function (login_res) {
    login_res = login_res.detail.value
    
    var url = app.globalData.baseUrl + 'api/login'
    var params = {
        username: login_res.username,
        password: login_res.password
    }
    
    var user_data = network.POST(url,params)
    console.log(user_data)
}

發現這取不到值,由於小程序的請求是異步的。
查資料說須要用到promiseapi

ojbkpromise

查資料+摸索
最終代碼以下:app

//network.js

const app = getApp()

function POST(url, params) {
    let promise = new Promise(function (resolve, reject) {
        wx.request({
            url: url,
            data: params,
            method: 'POST',
            success: function (res) {
                console.log('返回結果:')
                console.log(res.data)
                app.netWorkData.result = res.data
                resolve();
            }
        })
    });
    return promise
}
module.exports = {
    POST: POST
}

//app.js
App({
    netWorkData:{
        result: { code: -1, msg: '發起請求失敗' }
    }
})

//登陸
    login: function (login_res) {
        login_res = login_res.detail.value

        var url = app.globalData.baseUrl + 'api/login'
        var params = {
            username: login_res.username,
            password: login_res.password
        }

        network.POST(url,params).then(() => {
            //請求成功的操做
            var user_data = app.netWorkData.result
            
        });
    },

成功
oooojbk異步

相關文章
相關標籤/搜索