淘宝小程序开发——请求封装

// 云应用ID 不同商家可能有不同的店铺。店铺的云应用iD不同
const APPS = {
    default: '123456'  // 默认云应用ID 123456为示例,非真实
};

/****
 * 如果是模板小程序需要拿到模板id和卖家openID
 */
// let extJson = my.getExtConfigSync();

// const { templateId, sellerOpenId } = extJson;

/**
 * ajax请求数据
 * 1.云应用不需要完整域名,只需要接口访问路径即可。
 * 2.app:调用的云应用类型,为APPS内key值。
 * 3.method:云应用仅支持 GET,POST。
 * 4.POST 请求仅支持 application/json json数据格式传输。
 */
export default async function ajax({
    url, app = 'default', method = 'GET',
    data = {},
    headers = {},
    params = {},
}) {

    try {
        const { cloud } = getApp(); // getApp获取整个应用的实例
        const appId = APPS[app] || APPS.default; // 关联的云应用ID
        const paramsStr = Object.keys(params).map(key => `${key}=${params[key]}`).join('&');
        url = `/${url}${paramsStr ? `?${paramsStr}` : ''}`;
        /**
         * 如果是模板小程序
         *  */
        // url = `/${url}?templateId=${templateId}&sellerOpenId=${sellerOpenId}${paramsStr ? `&${paramsStr}` : ''}`;
        let options = {
            path: url, method, headers,
            exts: {
                cloudAppId: appId, // 云应用iD
                // timeout: 5000
            },
        }
        options.headers = {
            ...options.headers,
            'Content-Type': options.method === 'POST'
                ? 'application/json'
                : 'application/x-www-form-urlencoded',
        };

        if (options.method === 'POST') {
            options.body = data;
        } else {
            options.method = 'GET';
            // options.params = data;
            const qs = Object.keys(data)
                .map(key => `${key}=${data[key]}`)
                .join('&');
            if (qs) url = `${url}&${qs}`;
            options.path = url;
        }

        // console.log('options ====> ', options)
        const result = await cloud.application.httpRequest(options);
        // console.log(result)
        return result;
    } catch (e) {
        console.info(url + ' error!', e);
        throw e;
    };
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
微信小程序中的Promise用于处理异步操作。Promise是一个对象,它可以获取异步操作的结果。通过封装微信小程序内置的wx.request()请求方法,我们可以使用Promise来实现对请求封装。这样可以更加方便地管理异步操作。 使用Promise封装微信小程序内置的wx.request()请求方法,可以使其支持Get和Post请求。具体实现可以参考以下步骤: 1. 创建一个封装函数,例如request(url, method, data)。这个函数可以接受请求的URL、请求方法和数据作为参数。 2. 在封装函数内部,创建一个新的Promise对象,并在Promise的构造函数中传入一个回调函数。这个回调函数接受两个参数:resolve和reject,分别代表异步操作成功和失败的情况。 3. 在回调函数内部,使用wx.request()方法发送请求。根据传入的请求方法和数据,设置wx.request()的相关参数。 4. 在wx.request()的success和fail回调函数中,分别调用resolve和reject来处理异步操作的结果。如果请求成功,调用resolve并传递返回的数据;如果请求失败,调用reject并传递错误信息。 5. 返回Promise对象,以便在调用封装函数时可以通过Promise的then()和catch()方法来处理异步操作的结果。 通过这样的封装,我们可以更方便地使用Promise来处理微信小程序中的异步操作,提高代码的可读性和可维护性。同时,可以使用Promise的链式调用来处理多个异步操作的依赖关系,使代码更加清晰易懂。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [微信小程序promise方式封装请求文件request.js](https://download.csdn.net/download/Isuty/12024321)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [微信小程序学习第8周————Promise](https://blog.csdn.net/g18204746769/article/details/109253375)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [小程序 之 Promise](https://blog.csdn.net/CaBCo/article/details/124502544)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值