0.直接使用传统的回调函数来调用后端api接口
// 通过回调函数,来使用接口数据
userAuthorized_back(){ wx.getSetting({ success: data => { if(data.authSetting['scope.address.userInfo']){ wx.getUserInfo({ success: data => { this.setData({ authorized: true, userInfo: data.userInfo }) } }) } } }) }
1.创建promisic函数
让后端api接口返回promise对象前提是返回的不是promise对象)
// 可以解决小程序官方api不能返回promise对象的问题,可以成功返回promise对象 // func是一个函数 const promisic = function(func){ return function(params = {}){ return new Promise((resolve, reject) => { const args = Object.assign(params, { success: (res) => { resolve(res) }, fail: (err) => { reject(err) } }) func(args) }) } }
2.使用promisic函数,通过promise对象
2.1.将promisic函数导出
export { promisic }
2.2.在使用promisic函数的页面中引入
import { promisic } from "./utils/randomfun"
2.3.使用引入的promisic函数
// 通过promise,来使用接口数据 userAuthorized_promise(){ promisic(wx.getSetting)() .then(data => { if(data.authSetting['scope.address.userInfo']){ return promisic(wx.getUserInfo)() } return false }) .then(data => { if(!data) return this.setData({ authorized: true, userInfo: data.userInfo }) }) }
3.通过async...await来调用接口---变相让异步变成同步
// 通过async和await,来使用接口数据 async userAuthorized_asyncawait(){ const data = await promisic(wx.getSetting)() if(data.authSetting['scope.address.userInfo']){ const res = await promisic(wx.getUserInfo)() const userInfo = res.userInfo this.setData({ authorized: true, userInfo }) } }