Files
Pet3/miniprogram/utils/cloud.js
2026-06-25 18:24:29 +08:00

35 lines
1.1 KiB
JavaScript

// utils/cloud.js — 云函数调用统一封装
// 用法: const { ok, data } = await call('login', { ... })
/**
* 调用云函数,统一处理 loading 与错误提示。
* @param {string} name 云函数名
* @param {object} data 入参
* @param {object} [opts] { loading: boolean, loadingText: string }
* @returns {Promise<{ok:boolean, data?:any, code?:string, msg?:string}>}
*/
function call(name, data = {}, opts = {}) {
const { loading = false, loadingText = '加载中' } = opts;
if (loading) wx.showLoading({ title: loadingText, mask: true });
return wx.cloud
.callFunction({ name, data })
.then((res) => {
const result = res.result || {};
if (!result.ok) {
wx.showToast({ title: result.msg || '操作失败', icon: 'none' });
}
return result;
})
.catch((err) => {
console.error(`[cloud] ${name} 调用失败`, err);
wx.showToast({ title: '网络异常,请重试', icon: 'none' });
return { ok: false, code: 'NETWORK', msg: '网络异常' };
})
.finally(() => {
if (loading) wx.hideLoading();
});
}
module.exports = { call };