微信小程序wx.request()的promise封装和使用

考虑到这样一个功能在小程序的很多地方都会用到,我们将其放到一个单独的js文件中,

调用的时候引用这个js文件就可以了,在小程序的utils目录中新建一个common.js的文件,如下

 

 

common.js文件中的代码如下:

复制代码
const requestSync = (_url, _data, _method, _callcomplete) => {
    let pro = new Promise((resolve, reject) => {
        wx.request({
            url: _url,
            data: _data || {},
            method: _method,
            success: (res) => {
                if (res.statusCode === 200) {
                    console.log("wx.request is success:200 0k.")
                    resolve(res)
                } else {
                    console.log("wx.request is success:200 lost.")
                    reject(res)
                }
            },
            fail: (res) => {
                console.log("wx.request is fail:" + res.errMsg)
                reject(res)
            },
            complete:(res)=>{
                console.log('wx.request is complete.')
                if(_callcomplete && typeof _callcomplete === 'function'){
                    _callcomplete(res)
                }
            }
        })
    })
    return pro;
}

//暴露接口供外部调用
module.exports = {
    requestSync: requestSync
}
复制代码

小程序的.js页面调用代码如下:

复制代码
const wx2 = require('../../utils/common.js')
Page({
   // 页面原始数据
    data: {
        hotMovie: [],
    },
    handleAjax() {
        wx2.requestSync("https://i.maoyan.com/api/mmdb/movie/v3/list/hot.json", {
            ct:"%E5%90%88%E8%82%A5",
            ci:56,
            channelId:4
        }, "GET").then((res) => {
            console.log('res', res.data)
            const hot = res.data.data.hot.map(e => {
                const el = e;
                el.img = e.img.replace('w.h', '128.180');
                return el
            })
            this.setData({
                hotMovie: hot
            })
        })
    },
})
复制代码

 

posted @   webHYT  阅读(457)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示