国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

微信小程序異步處理詳解

2019-11-19 14:57:04
字體:
來源:轉載
供稿:網友

本文實例為大家分享了微信小程序異步處理的具體方法,供大家參考,具體內容如下

直接看問題:

然后看打印的結果:

根據上面兩圖可以看出,代碼上先執行的網絡請求,再執行打印的變量,但是從下面打印的結果來看,先出結果的是執行打印變量的函數(aafn函數),再打印出網絡請求success的回調里返回的數據和賦值后的變量的值;

為什么先執行的aafn,并且打印的值沒有賦值上?

因為wx.request是一個異步的請求,所以數據請求的同時,可以繼續向下執行函數。所以這里值還沒有賦值上就開始打印了變量的值;

這種情況,怎么解決呢?

方法一:

嵌套

在wx.request的success回調里執行aafn函數

然后運行結果

這里就取到值了

但是如果邏輯很復雜,需要用到很多層異步,就像這樣:

asyncFn1(function(){ //... asyncFn2(function(){  //...  asyncFn3(function(){   //...   asyncFn4(function(){    //...    asyncFn5(function(){      //...    });   });  }); });});

這樣代碼看起來就很不好看,代碼的可讀性和可維護性就不好了

那怎么解決這個問題呢?Promise這種概念的產生,很好地解決了這一切,Promise是什么?這里我就不多說了有興趣的自己去看一看,Promise介紹鏈接

先看看Promise的方式:

function asyncFn1(){ return new Promise(function (resolve, reject) {  //... })}// asyncFn2,3,4,5也實現成跟asyncFn1一樣的方式...

調用

asyncFn1() .then(asyncFn2) .then(asyncFn3) .then(asyncFn4) .then(asyncFn5);

這樣的話,異步函數就可以依次執行了

微信小程序的異步API怎么支持Promise呢?我們可以一個一個的用Promise去包裝這些API,但是這個還是比較麻煩的。不過,小程序的API的參數格式都比較統一,只接受一個object參數,回調都是在這個參數中設置,所以,這為了統一處理提供了便利,寫一個工具方法,來完成這樣的工作

首先需要引用一個叫bluebird.js的文件;

進入bluebird官網下載:

這個好像是不能下載的,但是你可以點擊進入,然后復制,在小程序里創建一個js文件,將代碼復制到這個js里面,然后引用。

然后再寫一個JS,里面寫工具方法:

下面是prom.js

然后需要使用的那個頁面的js里引入prom.js:

調用:

打印結果

這樣就可以了,完結。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新闻| 东乡县| 吉安县| 海伦市| 鲁山县| 济宁市| 洛阳市| 临安市| 华池县| 黑山县| 虹口区| 应城市| 启东市| 仪征市| 巴彦县| 娄烦县| 萨嘎县| 昌宁县| 特克斯县| 红原县| 明光市| 金昌市| 巢湖市| 宾阳县| 阳信县| 色达县| 香港| 石林| 仁化县| 眉山市| 叶城县| 津南区| 南开区| 赤城县| 浪卡子县| 武定县| 通州市| 福建省| 仙居县| 云安县| 嘉义县|