国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信小程序等待wx.requestPayment的回調(diào)函數(shù)執(zhí)行完后再執(zhí)行后續(xù)代碼

這篇具有很好參考價(jià)值的文章主要介紹了微信小程序等待wx.requestPayment的回調(diào)函數(shù)執(zhí)行完后再執(zhí)行后續(xù)代碼。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

async/await & Promise的再認(rèn)識(shí)

背景

在開(kāi)發(fā)微信小程序過(guò)程中,遇到如下需求:

需要等待wx.requestPayment的回調(diào)函數(shù)執(zhí)行完后再執(zhí)行后續(xù)代碼

這是因?yàn)樵谡{(diào)用wx.requestPayment之后,會(huì)彈出一個(gè)支付彈窗,如果此時(shí)點(diǎn)擊右上角的x,那么將會(huì)執(zhí)行wx.requestPayment的回調(diào)函數(shù)fail中的代碼。而由于wx.requestPayment的回調(diào)函數(shù)是異步執(zhí)行的,所以程序會(huì)繼續(xù)跑下去執(zhí)行后面的代碼。這會(huì)出現(xiàn)什么問(wèn)題呢?

async fabu(){
    const res = await wx.requestPayment({
      ...params,
      success: function (res) {
        console.log('Payment success');
        //...(假設(shè)這里是支付成功后的代碼)
      },
      fail: function (error) {
        console.log('Payment failed', error);
      }
    });
    //...(假設(shè)這里是支付成功后的代碼)
}

1.如果我把支付成功后的代碼寫到wx.requestPayment的后面,那么在我點(diǎn)擊了右上角的x后,程序會(huì)執(zhí)行后續(xù)的代碼,導(dǎo)致我明明沒(méi)有支付卻執(zhí)行了支付成功的代碼。

2.如果我把支付成功后的代碼寫到wx.requestPayment的回調(diào)函數(shù)(succes)里,那么會(huì)出現(xiàn):在彈出彈窗等待用戶進(jìn)行支付操作之后,程序會(huì)繼續(xù)執(zhí)行wx.requestPayment后面的代碼的現(xiàn)象,這會(huì)導(dǎo)致用戶未完成支付操作,fabu()這個(gè)函數(shù)就已經(jīng)執(zhí)行完并返回結(jié)果了。

Solution

由于wx.requestPayment的回調(diào)函數(shù)是異步執(zhí)行的,而且微信開(kāi)發(fā)者工具不支持直接使用async/await等待回調(diào)函數(shù)的執(zhí)行完成,所以無(wú)法直接通過(guò)在wx.requestPayment前加上await來(lái)等待回調(diào)函數(shù)執(zhí)行完畢。

不過(guò),可以使用Promiseresolve來(lái)手動(dòng)實(shí)現(xiàn)等待回調(diào)函數(shù)執(zhí)行完畢后再執(zhí)行后續(xù)代碼的效果。

async doPayment(params) {
    let that = this;
    try {
      const paymentResult = await new Promise((resolve, reject) => {
        wx.requestPayment({
          ...params,
          success: function (res) {
            console.log('Payment success');
            resolve(res); // 在成功回調(diào)函數(shù)中手動(dòng)觸發(fā)resolve,并傳遞回調(diào)數(shù)據(jù)
          },
          fail: function (error) {
            //如果不是耗時(shí)處理,處理支付失敗的情況可以寫在這
            console.log('Payment failed in', error);
            reject(error); // 在失敗回調(diào)函數(shù)中手動(dòng)觸發(fā)reject,并傳遞錯(cuò)誤信息
          }
        });
      });
      console.log('Continue with the next steps');
      // 在這里可以執(zhí)行支付成功后的代碼
    } catch (error) {
      //如果是耗時(shí)處理,處理支付失敗的情況可以寫在這
      console.log('Payment failed out', error);
    }
    console.log('這里是try catch塊后面的代碼');
  },

這里我們?cè)赿oPayment函數(shù)中使用await new Promise來(lái)等待wx.requestPayment的完成,并獲取支付結(jié)果。在成功情況下,輸出"Payment success",然后可以執(zhí)行后續(xù)代碼。在失敗情況下,輸出"Payment failed"并打印錯(cuò)誤信息,可以在catch塊中處理支付失敗的情況。

這樣我們就能做到等待wx.requestPayment的回調(diào)函數(shù)執(zhí)行完后再執(zhí)行后續(xù)代碼,如圖所示:

微信小程序等待wx.requestPayment的回調(diào)函數(shù)執(zhí)行完后再執(zhí)行后續(xù)代碼,微信小程序,javascript,微信小程序,javascript文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-704198.html

到了這里,關(guān)于微信小程序等待wx.requestPayment的回調(diào)函數(shù)執(zhí)行完后再執(zhí)行后續(xù)代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 小程序wx.requestPayment報(bào)錯(cuò)/無(wú)響應(yīng)信息梳理

    大風(fēng)起兮云飛揚(yáng),安得猛士兮走四方,BUG,任何時(shí)候都要改,不改不行,你想想,你自己一個(gè)人,下了班,吃著火鍋還唱著歌,突然支付就不能用了! 本文整理了關(guān)于微信小程序wx.requestPayment的報(bào)錯(cuò)或無(wú)響應(yīng)的問(wèn)題。報(bào)錯(cuò)信息與回答多整理于[微信開(kāi)發(fā)社區(qū)],本文僅做整理。

    2024年02月09日
    瀏覽(19)
  • 微信小程序-虛擬支付:適用場(chǎng)景 / iPhone調(diào)試用支付成功,Android調(diào)用失敗,提示“小程序支付能力已被限制” / “errMsg“.“requestPayment:fail banned”

    微信小程序-虛擬支付:適用場(chǎng)景 / iPhone調(diào)試用支付成功,Android調(diào)用失敗,提示“小程序支付能力已被限制” / “errMsg“.“requestPayment:fail banned”

    一、官方文檔 wx.requestVirtualPayment(Object object) | 微信開(kāi)放文檔 二、微信wx.requestVirtualPayment虛擬支付主要適用于以下場(chǎng)景 1. 虛擬商品購(gòu)買:如游戲內(nèi)虛擬道具、游戲點(diǎn)卡、虛擬禮物等,用戶可以直接通過(guò)微信虛擬支付完成支付。 2. 虛擬貨幣充值:如游戲幣、積分、紅包余額等,

    2024年02月06日
    瀏覽(25)
  • 微信小程序 wx.showModal

    微信小程序--wx.showModal_海轟Pro的博客-CSDN博客

    2024年02月15日
    瀏覽(19)
  • 解決微信小程序回調(diào)地獄問(wèn)題

    一、背景 ? ? 小程序開(kāi)發(fā)經(jīng)常遇到根據(jù)網(wǎng)絡(luò)請(qǐng)求結(jié)果,然后繼續(xù) 處理下一步業(yè)務(wù)操作,代碼如下: 這段代特點(diǎn):層層嵌套,邏輯負(fù)責(zé)可讀性低,不易維護(hù)。解決方案使用?new?Promise((resolve,?reject)?=?{})可使用異步順序執(zhí)行來(lái)解決。 二、代碼示例 第一個(gè)請(qǐng)求函數(shù)代碼示例 第

    2024年02月09日
    瀏覽(27)
  • 微信小程序 wx:if使用

    在微信小程序中,可以使用 wx:if 指令來(lái)控制某個(gè)元素是否需要被渲染到頁(yè)面上。根據(jù)條件表達(dá)式的結(jié)果, wx:if 指令決定元素是否顯示。 下面是使用 wx:if 的基本示例: 在上述代碼中, wx:if 指令的值為一個(gè)條件表達(dá)式 {{condition}} ,根據(jù)該條件表達(dá)式的結(jié)果決定是否渲染 view 元

    2024年02月09日
    瀏覽(25)
  • 微信小程序-登錄(wx.login)

    微信小程序-登錄(wx.login)

    用戶微信登錄小程序有兩種情況,分別為彈出登錄提示和不彈出登錄提示兩種。彈出登錄提示的情況下,用戶確定后會(huì)向后臺(tái)傳入更多參數(shù),例如用戶昵稱等。不彈出登錄提示只能獲取到用戶的臨時(shí)登錄憑證code。主要根據(jù)第二種情況進(jìn)行描述。 這個(gè)code具有時(shí)效性,能用于區(qū)

    2024年02月15日
    瀏覽(16)
  • 微信小程序本地存儲(chǔ)(wx.setStorage)和(wx.setStorageSync)

    ?在微信小程序中,可以使用本地存儲(chǔ)來(lái)保存一些數(shù)據(jù)比如用戶狀態(tài),姓名,性別等; 本地存儲(chǔ)主要包括兩種方式:緩存和本地?cái)?shù)據(jù)存儲(chǔ)。 緩存 緩存是一種快速訪問(wèn)內(nèi)存的臨時(shí)存儲(chǔ)機(jī)制,可以有效地提高應(yīng)用程序的響應(yīng)速度。在微信小程序中,可以使用 wx.setStorage 方法和

    2023年04月18日
    瀏覽(30)
  • APP 跳轉(zhuǎn)微信小程序和回調(diào)

    在同一開(kāi)放平臺(tái)賬號(hào)下的移動(dòng)應(yīng)用及小程序無(wú)需關(guān)聯(lián)即可完成跳轉(zhuǎn),非同一開(kāi)放平臺(tái)賬號(hào)下的小程序需與移動(dòng)應(yīng)用(APP)成功關(guān)聯(lián)后才支持跳轉(zhuǎn)。 可在“管理中心-移動(dòng)應(yīng)用-應(yīng)用詳情-關(guān)聯(lián)小程序信息”,為通過(guò)審核的移動(dòng)應(yīng)用發(fā)起關(guān)聯(lián)小程序操作。 App打開(kāi)下程序有兩種方式

    2023年04月09日
    瀏覽(125)
  • 微信小程序如何實(shí)現(xiàn)兼容----wx.getSystemInfoSync、 wx.getSystemInfo、wx.canIUse

    小程序的宿主環(huán)境一直在迭代更新,提供更多的能力給開(kāi)發(fā)者去完成更多的事情,所以你的小程序會(huì)運(yùn)行在不同版本的宿主環(huán)境下。為了讓你的小程序在不同環(huán)境下都能提供相應(yīng)的服務(wù),我們需要來(lái)了解一下在小程序中如何實(shí)現(xiàn)兼容辦法。 1.針對(duì)不同手機(jī)進(jìn)行程序上的兼容

    2024年02月09日
    瀏覽(20)
  • 微信小程序wx:for 的使用以及wx:key綁定

    wx:for基本使用 wx:for-item和wx:for-index重新命名item和index wx:key兩種綁定方式以及注意事項(xiàng) wx:for基本使用 業(yè)務(wù)層數(shù)據(jù) 視圖層 wx:for遍歷時(shí)候每一項(xiàng)名稱為 item 每一項(xiàng)索引名稱為 index wx:for-item和wx:for-index實(shí)現(xiàn)item和index重命名 wx:for-item=\\\"str\\\" 將原來(lái)名稱 item 修改成 str wx:for-index=\\\"i 將原來(lái)

    2024年02月11日
    瀏覽(14)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包