You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
4.4 KiB
165 lines
4.4 KiB
const Promise = require('../polyfill/es6-promise.js').Promise; |
|
let common = require('../utils/common.js'); |
|
function promisify() { |
|
wx.pro = {}; // wx.pro 下面挂载着返回 promise 的 wx.API |
|
// 普通的要转换的函数 |
|
const functionNames = [ |
|
'login', |
|
'getUserInfo', |
|
'navigateTo', |
|
'checkSession', |
|
'getStorageInfo', |
|
'removeStorage', |
|
'clearStorage', |
|
'getNetworkType', |
|
'getSystemInfo', |
|
'chooseImage', //选择图片 |
|
'uploadFile', //上传图片, |
|
'chooseLocation', //选择地址, |
|
'getImageInfo', |
|
'requestPayment', |
|
'getLocation', |
|
'downloadFile', |
|
'saveImageToPhotosAlbum', |
|
"saveVideoToPhotosAlbum" |
|
]; |
|
|
|
functionNames.forEach((fnName) => { |
|
wx.pro[fnName] = (obj = {}) => new Promise((resolve, reject) => { |
|
obj.success = function(res) { |
|
//console.log(`wx.${fnName} success`, res) |
|
resolve(res); |
|
}; |
|
obj.fail = function(err) { |
|
//console.error(`wx.${fnName} fail`, err); |
|
wx.hideLoading(); |
|
reject(err); |
|
}; |
|
wx[fnName](obj); |
|
}); |
|
}); |
|
|
|
wx.pro.fromSync = (fun) => new Promise((resolve, reject) => { |
|
try { |
|
resolve(fun()); |
|
} catch (ex) { |
|
reject(ex); |
|
} |
|
}); |
|
|
|
wx.pro.all = (arr) => Promise.all(arr); |
|
// 特殊改造的函数 |
|
|
|
wx.pro.getStorage = (key) => new Promise((resolve, _reject) => { |
|
wx.getStorage({ |
|
key, |
|
success: (res) => { |
|
resolve(res.data); // unwrap data |
|
}, |
|
fail: (_err) => { |
|
resolve(); // not reject, resolve undefined |
|
} |
|
}); |
|
}); |
|
|
|
wx.pro.setStorage = (key, value) => new Promise((resolve, reject) => { |
|
wx.setStorage({ |
|
key, |
|
data: value, |
|
success: (_res) => { |
|
resolve(value); // 将数据返回 |
|
}, |
|
fail: (err) => { |
|
reject(err); |
|
} |
|
}); |
|
}); |
|
|
|
wx.pro.request = (options) => { |
|
console.log(options) |
|
if (options.toast) { |
|
wx.showToast({ |
|
title: options.toast.title || '加载中', |
|
icon: 'loading' |
|
}); |
|
} |
|
|
|
return new Promise((resolve, reject) => { |
|
let req = { |
|
url: wx.getStorageSync('serverurl') + options.url, |
|
method: options.method || 'GET', |
|
header: { |
|
'token': wx.getStorageSync("token"), |
|
"formId": wx.getStorageSync("formId") |
|
}, |
|
success: (res) => { |
|
console.log(res) |
|
// if (res.data.code == 203) { |
|
// // console.log(111) |
|
// let refresh_token = wx.getStorageSync("refresh_token") |
|
// let token = wx.getStorageSync("token") |
|
// let src = `api/refresh-token?refreshToken=${refresh_token}&token=${token}` |
|
// return wx.pro.request({ |
|
// url: src, |
|
// method: "GET" |
|
// }).then((ret) => { |
|
// console.log(ret) |
|
// if (ret.code == '200') { |
|
// wx.setStorageSync('token', res.data.token); |
|
// wx.setStorageSync('token', res.data.refresh_token); |
|
// } |
|
// }) |
|
// wx.pro.request(options) |
|
// } |
|
wx.removeStorageSync("formId"); |
|
if (res.statusCode >= 400) { |
|
console.log(res) |
|
if (res.statusCode === 401) { |
|
wx.removeStorageSync("token"); |
|
} |
|
if (res.statusCode === 410) { |
|
wx.showModal({ |
|
title: '提示', |
|
content: res.data, |
|
showCancel: false, |
|
success(_res) {} |
|
}); |
|
} |
|
if (res.statusCode == 404) { |
|
wx.showModal({ |
|
title: '提示', |
|
content: res.data.msg, |
|
showCancel: false, |
|
success(_res) {} |
|
}); |
|
} |
|
wx.hideLoading(); |
|
reject(res); |
|
} else { |
|
//console.log('wx.request success', res.data) |
|
resolve(res.data); // unwrap data |
|
if (!res.data) { |
|
wx.hideLoading(); |
|
} |
|
} |
|
}, |
|
fail: (err) => { |
|
console.log(JSON.stringify(err)); |
|
console.error('wx.request fail [network]', options, err); |
|
wx.hideLoading(); |
|
reject(err); |
|
} |
|
}; |
|
if (options.data) { |
|
req.data = options.data; |
|
req.header['content-type'] = 'application/json'; |
|
} |
|
wx.request(req); |
|
}); |
|
}; |
|
} |
|
|
|
|
|
promisify(); |
|
|
|
module.exports = Promise; |