欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

微信小程序之onLaunch與onload異步問題詳解

所述問題:

創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)吳中,十多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792

前端時間開發(fā)了一個微信小程序商城項目,因為這個項目我們的需求是進(jìn)入小程序就通過wx.login({}) 這個api進(jìn)行用戶登錄,獲取系統(tǒng)后臺的用戶基本信息。再此之前,一直以為微信小程序中的App.js 中onLaunch (小程序初始化完成執(zhí)行該方法)方法比其他頁面的的 onload 方法要先執(zhí)行。那么問題就來了,我每次進(jìn)入小程序首頁的時候有時候會先執(zhí)行onlaunch方法,有時又會先執(zhí)行首頁的onload的方法,最后經(jīng)過確定,在微信小程序中這兩個方法并沒有執(zhí)行先后的順序,因為他們都是異步執(zhí)行的。當(dāng)然開發(fā)過微信小程序的開發(fā)者都知道微信請求數(shù)據(jù)都是異步執(zhí)行的,如在同一個onload寫兩個請求數(shù)據(jù)的方法,它不一定會按照先后順序去執(zhí)行,這就是傳說中的異步地獄了。

解決方法:

當(dāng)然,我既然知道這個執(zhí)行順序是由于微信小程序的異步執(zhí)行請求原因?qū)е碌?。我們可以使用Promise 來解決異步編程問題啦。我的解決方法是,首先我是在app.js 中定義了一個全局方法,用來登錄小程序請求用戶信息的接口,每次進(jìn)入首頁的時候先判斷我是否已有用戶信息緩存,假如不存在那么請求app.js中的全局方法進(jìn)行數(shù)據(jù)獲取。在這里我就不詳細(xì)介紹Promise 的基本用法了,因為阮一峰已經(jīng)將的非常詳細(xì)了,大家可以點擊查看【 http://es6.ruanyifeng.com/#docs/promise#Promise-all 】。

方法實現(xiàn):

App.js方法實現(xiàn):

App({
onLaunch: function() {
console.log('App Launch')
//不在這里默認(rèn)請求
},
/**
* 定義全局變量
*/
globalData: {
openid: '', //用戶openid
userId: '', //用戶編號
},
/**
* 用戶登錄請求封裝(解決onlaunch和onload執(zhí)行順序問題)
*/
userLogin: function() {
var that = this;
//定義promise方法
return new Promise(function(resolve, reject) {
// 調(diào)用登錄接口
wx.login({
success: function(res) {
if (res.code) {
console.log("用戶登錄授權(quán)code為:" + res.code);
//調(diào)用wx.request請求傳遞code憑證換取用戶openid,并獲取后臺用戶信息
wx.request({
url: 'https://www.xxxx.xxx.api', // 后臺請求用戶信息方法【注意,此處必須為https數(shù)字加密證書】
data: {
code: res.code //code憑證
},
header: {
'content-type': 'application/json' // 默認(rèn)值
},
success(res) {
console.log(res.data)
if (res.data.errcode == 0) {
//獲取用戶信息成功
that.globalData.openid = res.data.openid;
that.globalData.userId = res.data.UserId;
//存入session緩存中
wx.setStorageSync("userId", that.globalData.userId)
console.log(that.globalData.userId);
console.log(that.globalData.openid);
//promise機制放回成功數(shù)據(jù)
resolve(res.data);
} else {
reject('error');
}
},
fail: function(res) {
reject(res);
wx.showToast({
title: '系統(tǒng)錯誤'
})
 },
complete: () => {

} //complete接口執(zhí)行后的回調(diào)函數(shù),無論成功失敗都會調(diào)用
})
} 
else 
{
reject("error");
}
}
})
})
}
});

index.js實現(xiàn):

const app=getApp();//初始化app.js
page({

onLoad: function (option) {
var that = this;
let UserId = wx.getStorageSync("userId");
console.log("進(jìn)入首頁的用戶編號為:" + UserId);
if (UserId == '') {
app.userLogin().then(res => {
console.log("promise回調(diào)后的數(shù)據(jù):");
console.log(res);
if (res.errcode == 0) {
//把首頁需要請求的數(shù)據(jù)接口都提取到一個自定義方法中
that.GetData();
}
})
}
else
{
//用戶緩存存在
that.GetData();
}

}
,
GetData()
{
//需要用到用戶編號換取商品信息的接口

}
})

總結(jié):

當(dāng)然解決異步回調(diào)的方法有很多種,不過我在這里只說我認(rèn)為好用的一種,大家有什么想法也可以一起分享學(xué)習(xí)。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

網(wǎng)站名稱:微信小程序之onLaunch與onload異步問題詳解
網(wǎng)站路徑:http://aaarwkj.com/article42/ggpeec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、網(wǎng)站設(shè)計、云服務(wù)器、自適應(yīng)網(wǎng)站App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
一区二区亚洲国产精品| 国产丝袜美腿一二三区| 亚洲av欧美日韩国产| 99热这里只有精品在线| 日本在线一区二区中文| 国产精品青青在线观看爽香蕉| 成年女人毛片免费观看不卡| 国产内射一级一片内射高清视频1| 国产三级系列在线观看| 久久精品国产亚洲熟女| 91九色精品视频在线观看| 色播婷婷午夜激情福利| 日本韩国国产三级在线| 在线观看国产自拍精品| 日本国产精品免费在线观看| 欧美成人一区二区三区八| 91久久精品人妻一区二区| 国产18成人午夜视频在线观看| 五月天丁香婷婷一区二区| 午夜在线观看成人av| 国产在线观看91精品一区| 日韩一区二区三级电影| 久娜娜精品视频在线观看| 免费看的日韩av毛片| 亚洲一区二区精品自拍| 婷婷色悠悠,色悠悠激情啪啪| 国产日韩欧美在线精品| 欧美日韩精品一区二区三| 久久精品国产亚洲av麻豆网站| 久久精品亚洲熟女av蜜謦| 射精视频在线观看免费| 亚洲一区二区另类视频| 欧美激情在线精品一区二区| 日韩av天堂免费网站| 国产在线精品专区第一页| 国产三级自拍视频在线观看网站 | 久久这里只有精品视频六| 亚洲乱码国产乱码精品| 欧美一区二区三区日韩色| 久久人妻少妇嫩草av蜜桃综合| 亚洲一二三区精品与老人|