uni-app中如何編寫一個promise函數並調用


1.首先創建一個promise函數:minix --》pay.js

// 小程序端支付
        // #ifdef MP-WEIXIN
        pay(path, paramsData) {
            console.log(arguments);
            paramsData.payment = 'minipay';
            return new Promise((resolve, reject) => { //創建一個promise(),第一個參數resolve表示成功的返回參數,第二個參數reject表示失敗的返回參數
                if (paramsData.payment) {
                    uni.showActionSheet({
                        itemList: ['微信支付', '支付寶支付'],
                        success: function (res) {
                            console.log(paramsData)
                            paramsData.payment = 'minipay'// ['wxpay', 'alipay'][res.tapIndex]
                        },
                        fail: function (err) {
                            reject(err);//表示失敗后返回的數據
                        }
                    });
                } else {
                    uni.login({
                        provider: 'weixin',
                        success: (loginRes) => {
                            console.log(loginRes);
                            paramsData.code = loginRes.code;
                            this.$api[path].pay(paramsData).then(res => {
                                console.log('你好你好年后')
                                console.log(res)
                                let resData = res.data.meta;
                                this.order_id = res.data.id;
                                // 小程序支付
                                uni.requestPayment({
                                    provider: 'wxpay',
                                    appId: resData.appId,
                                    timeStamp: resData.timeStamp,
                                    nonceStr: resData.nonceStr,
                                    package: resData.package,
                                    signType: resData.signType,
                                    paySign: resData.paySign,
                                    success: (res) => {
                                        resolve(res);//表示成功后返回的數據
                                    },
                                    fail: (err) => {
                                        reject(err);
                                    }
                                });
                            });
                        },
                        fail: err => {
                            reject(err);
                        }
                    });
                }
            })
        }
        // #endif

2.調用上面封裝好的函數:

other.veu:
引入pay.js中的函數pay

1.    import pay from '@/mixins/pay.js';

2. 用this調用方法

this.pay("order", { id: id, operation: "pay" }).then(res => {
                console.log(res)//此處返回值是上面的resolve(res)的數據
            }).catch(err => {
                console.log(err)//此處返回值是上面reject(err);的數據
            })

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM