非常重要,便于项目大局观,使用es7的 async和await
如何将小程序内置非promise API转换为promise
这里是我封装的一个wx.request函数如何将wx.request转换成promise对象呢?
转换的方法
创建一个文件夹放入代码,回到你需要引入的地方引入即可
const promisic = function (func) {
return function (params = {}) {
return new Promise((resolve, reject) => {
const args = Object.assign(params, {
success: (res) => {
resolve(res);
},
fail: (error) => {
reject(error);
}
});
func(args);
});
};
};
在实战项目中使用
import { config } from '../config/config'
import { promisic } from './util'
class Http {
//如何让小程序返回promise对象
static async request({
url,
//callback,加上async 和 await 可以当作是同步函数的调用
method = "GET"
})
{
//把结果return回去
return await promisic(wx.request) ({
url: `${config.apiBaseUrl}${url}`,
method
//使用promise就不用使用回调success
// success: res => {
// callback(res.data)
// }
})
}
}
// wx.request
// 照常传参
// promistic(wx.request)({
// url: '',
// data: {
// }
// })
export {
Http
}
检验是否封装http请求成功并返回promise对象
该函数十分重要可以将所有wx开头的函数全部转换为promise对象便于使用async 和 await来编程 非常有利于后期项目的维护和迭代
在编译前请勾选上微信开发者工具中的增加编译这样才能支持es7的async和await