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);的数据
            })

 

posted @ 2019-08-22 21:45  L某人  阅读(7032)  评论(0编辑  收藏  举报