知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們在追求其視覺表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏壧峁┍憬莸闹С郑?
您當(dāng)前位置>首頁 » 新聞資訊 » 小程序相關(guān) >
微信小程序異步處理
發(fā)表時(shí)間:2022-9-6
發(fā)布人:葵宇科技
瀏覽次數(shù):50
直接看問題:
然后看打印的結(jié)果:
根據(jù)上面兩圖可以看出,代碼上先執(zhí)行的網(wǎng)絡(luò)請求,再執(zhí)行打印的變量,但是從下面打印的結(jié)果來看,先出結(jié)果的是執(zhí)行打印變量的函數(shù)(aafn函數(shù)),再打印出網(wǎng)絡(luò)請求success的回調(diào)里返回的數(shù)據(jù)和賦值后的變量的值;
為什么先執(zhí)行的aafn,并且打印的值沒有賦值上?
因?yàn)閣x.request是一個(gè)異步的請求,所以數(shù)據(jù)請求的同時(shí),可以繼續(xù)向下執(zhí)行函數(shù)。所以這里值還沒有賦值上就開始打印了變量的值;
這種情況,怎么解決呢?
方法一: 嵌套
在wx.request的success回調(diào)里執(zhí)行aafn函數(shù)
然后運(yùn)行結(jié)果
這里就取到值了
但是如果邏輯很復(fù)雜,需要用到很多層異步,就像這樣:
asyncFn1(function(){
//...
asyncFn2(function(){
//...
asyncFn3(function(){
//...
asyncFn4(function(){
//...
asyncFn5(function(){
//...
});
});
});
});
});
這樣代碼看起來就很不好看,代碼的可讀性和可維護(hù)性就不好了
那怎么解決這個(gè)問題呢?Promise這種概念的產(chǎn)生,很好地解決了這一切,Promise是什么?這里我就不多說了有興趣的自己去看一看, Promise介紹鏈接
先看看Promise的方式:
function asyncFn1(){
return new Promise(function (resolve, reject) {
//...
})
}
// asyncFn2,3,4,5也實(shí)現(xiàn)成跟asyncFn1一樣的方式...
調(diào)用
asyncFn1()
.then(asyncFn2)
.then(asyncFn3)
.then(asyncFn4)
.then(asyncFn5);
這樣的話,異步函數(shù)就可以依次執(zhí)行了
微信小程序的異步API怎么支持Promise呢?
我們可以一個(gè)一個(gè)的用Promise去包裝這些API,但是這個(gè)還是比較麻煩的。不過,小程序的API的參數(shù)格式都比較統(tǒng)一,只接受一個(gè)object參數(shù),回調(diào)都是在這個(gè)參數(shù)中設(shè)置,所以,這為了統(tǒng)一處理提供了便利,寫一個(gè)工具方法,來完成這樣的工作
首先需要引用一個(gè)叫bluebird.js的文件;
進(jìn)入 bluebird官網(wǎng) 下載:
這個(gè)好像是不能下載的,但是你可以點(diǎn)擊進(jìn)入,然后復(fù)制,在小程序里創(chuàng)建一個(gè)js文件,將代碼復(fù)制到這個(gè)js里面,然后引用
然后再寫一個(gè)JS,里面寫工具方法:
下面是prom.js
然后需要使用的那個(gè)頁面的js里引入prom.js:
調(diào)用:
打印結(jié)果
這樣就可以了,完結(jié)。
相關(guān)案例查看更多
相關(guān)閱讀
- 昆明做網(wǎng)站
- 微信小程序
- APP
- 云南網(wǎng)站建設(shè)首頁
- 報(bào)廢車拆解管理系統(tǒng)
- 開發(fā)制作小程序
- 小程序被騙
- 百度小程序公司
- 手機(jī)網(wǎng)站建設(shè)
- 云南網(wǎng)站建設(shè)開發(fā)
- 安家微信小程序
- 昆明軟件定制
- 小程序被騙退款成功
- 汽車報(bào)廢軟件
- 云南網(wǎng)站建設(shè)首選公司
- 網(wǎng)站開發(fā)哪家好
- 海南小程序制作公司
- 海報(bào)插件
- 網(wǎng)站建設(shè)首頁
- 云南網(wǎng)頁制作
- 網(wǎng)站建設(shè)快速優(yōu)化
- 網(wǎng)絡(luò)公司
- 出入小程序
- vue開發(fā)小程序
- 網(wǎng)站建設(shè)方案 doc
- 北京小程序制作
- 小程序退款
- 云南網(wǎng)站維護(hù)
- 昆明小程序公司
- 區(qū)塊鏈