溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

微信小程序中怎么進(jìn)行異步處理

發(fā)布時(shí)間:2022-04-19 15:52:03 來(lái)源:億速云 閱讀:449 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容主要講解“微信小程序中怎么進(jìn)行異步處理”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“微信小程序中怎么進(jìn)行異步處理”吧!

直接看問(wèn)題:

微信小程序中怎么進(jìn)行異步處理

然后看打印的結(jié)果:

微信小程序中怎么進(jìn)行異步處理

根據(jù)上面兩圖可以看出,代碼上先執(zhí)行的網(wǎng)絡(luò)請(qǐng)求,再執(zhí)行打印的變量,但是從下面打印的結(jié)果來(lái)看,先出結(jié)果的是執(zhí)行打印變量的函數(shù)(aafn函數(shù)),再打印出網(wǎng)絡(luò)請(qǐng)求success的回調(diào)里返回的數(shù)據(jù)和賦值后的變量的值;

為什么先執(zhí)行的aafn,并且打印的值沒(méi)有賦值上?

因?yàn)閣x.request是一個(gè)異步的請(qǐng)求,所以數(shù)據(jù)請(qǐng)求的同時(shí),可以繼續(xù)向下執(zhí)行函數(shù)。所以這里值還沒(méi)有賦值上就開(kāi)始打印了變量的值;

這種情況,怎么解決呢?

方法一:

嵌套

在wx.request的success回調(diào)里執(zhí)行aafn函數(shù)

微信小程序中怎么進(jìn)行異步處理

然后運(yùn)行結(jié)果

微信小程序中怎么進(jìn)行異步處理

這里就取到值了

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

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

這樣代碼看起來(lái)就很不好看,代碼的可讀性和可維護(hù)性就不好了

那怎么解決這個(gè)問(wèn)題呢?Promise這種概念的產(chǎn)生,很好地解決了這一切,Promise是什么?這里我就不多說(shuō)了有興趣的自己去看一看,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è)還是比較麻煩的。不過(guò),小程序的API的參數(shù)格式都比較統(tǒng)一,只接受一個(gè)object參數(shù),回調(diào)都是在這個(gè)參數(shù)中設(shè)置,所以,這為了統(tǒng)一處理提供了便利,寫(xiě)一個(gè)工具方法,來(lái)完成這樣的工作

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

進(jìn)入bluebird官網(wǎng)下載:

微信小程序中怎么進(jìn)行異步處理

這個(gè)好像是不能下載的,但是你可以點(diǎn)擊進(jìn)入,然后復(fù)制,在小程序里創(chuàng)建一個(gè)js文件,將代碼復(fù)制到這個(gè)js里面,然后引用。

然后再寫(xiě)一個(gè)JS,里面寫(xiě)工具方法:

微信小程序中怎么進(jìn)行異步處理

下面是prom.js

微信小程序中怎么進(jìn)行異步處理

然后需要使用的那個(gè)頁(yè)面的js里引入prom.js:

微信小程序中怎么進(jìn)行異步處理

調(diào)用:

微信小程序中怎么進(jìn)行異步處理

打印結(jié)果

微信小程序中怎么進(jìn)行異步處理

到此,相信大家對(duì)“微信小程序中怎么進(jìn)行異步處理”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI