微信小程序——API接口 Promise化

這裏放上個人覺得最舒服的一種Promise化方式:

在utils裏面新建文件Promise.js

//Promise.js

function wxPromise(functionName, params) {
    return new Promise(function(resolve, reject) {
        wx[functionName]({
            ...params,
            success: resolve,
            fail: reject
        })
    })
}

function login(params = {}) {
    return wxPromise('login', params);
}

function getSetting(params = {}) {
    return wxPromise('getSetting', params);
}

function request(params = {}) {
    return wxPromise('request', params);
}

module.exports = {
    login,
    getSetting,
    request,
}

然後在需要用到的Page頁面或者App頁面裏面進行導入:

//somepage.js
var wxP = require('../../utils/Promise.js');

Page({
	onLoad(options) {
		wxP.getSetting({
			withSubscriptions: true
		})
		
		.then(res =>{	//接收調用getSetting返回的響應
			if(res.authSetting['scope.userInfo']){
				return wxP.login({})
			}
		})
		
		.then(res =>{	//接收調用login返回的響應
			return wxP.request({
            	url: 'www.YulRW.com',
                method: "POST",
                data: {
                	data: 'something'
                }
            })
		})
		
		.then(res =>{	//接收調用request返回的響應
			console.log(res);
		})
	},
})

更新 ↓

注意,現在的小程序已經可以支持API的Promise化了,需用npm包構建,下面貼出使用過程:
首先要先安裝npm,不知道npm的可以去網上搜索安裝過程。然後進行一下操作

  1. npm初始化
npm init -y
  1. 安裝小程序的Promise包
npm install --save miniprogram-api-promise
  1. 在小程序開發工具中構建npm
    在這裏插入圖片描述

  2. 配置使用

在小程序的入口文件app.js中加入一下代碼:

//app.js

//引入安裝的包
import { promisifyAll, promisify } from 'miniprogram-api-promise';

const wxp = {}
// 對小程序api接口全部Promise化
promisifyAll(wx, wxp)
console.log(wxp.getSystemInfoSync())
wxp.getSystemInfo().then(console.log)
wxp.showModal().then(wxp.openSetting())

// 兼容性:既可以Promise寫法,又可以用回調函數寫法(success、fail、complete回調函數)
wxp.getSystemInfo({success(res) {console.log(res)}})

// 小程序單個api的promise使用
promisify(wx.getSystemInfo)().then(console.log)

另外,其他詳情請看微信官方文檔:
小程序Promise

過程中有任何不懂得或者有疑問得歡迎留言,我儘量及時回覆

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章