codecamp

QQ小程序 qq.cloud.callFunction

调用云函数 qq.cloud.callFunction 方法的定义如下:

Cloud.callFunction(object: Object): Promise<Object>

object: Object

属性 类型 默认值 必填 说明
name string 是 云函数名
data Object 否 传递给云函数的参数,在云函数中可通过 event 参数获取
config Object 否 配置

object.config 的结构

属性 类型 默认值 必填 说明
env string 是 环境 ID,填写后将忽略 init 时指定的环境 ID

返回值

Promise.<Object>

属性 类型 说明
result any 云函数返回的结果
requestID string 云函数执行 ID,可用于日志查询

data 参数说明 在 data 中如果传入了 Buffer 类型的数据,数据在 JSON 序列化的过程中会被转成 {},以小程序端调用为例:

// 小程序端调用
qq.cloud.callFunction({
  // ...
  data: {
    buf: ArrayBuffer // 此处填入了某种方式获取得到的 Buffer 数据,可以是 request 下来的,可以是读文件读出来的等等
  },
})
// 云函数端收到的 event 参数的结构:
{
  "buf": {},
}

这里应当避免传入 Buffer 类型的数据,因为直接传输buffer数组JSON串会让数据体积增大,增加传输耗时,如果需要传递 Buffer,有两种替代的建议方式:

  1. 若 Buffer 较大,可先上传至文件存储空间,然后调用云函数的时候传递 fileID / 文件 URL 而不是 Buffer,再在云函数中下载下来
  2. 若 Buffer 非常小 (如 < 10k),可将 Buffer 转成 base64 再调用

示例代码 假设已有一个云函数 add:

exports.main = (event, context, cb) => {
  return event.x + event.y
}

在小程序端发起对云函数 add 的调用:

qq.cloud.callFunction({
  // 要调用的云函数名称
  name: 'add',
  // 传递给云函数的event参数
  data: {
    x: 1,
    y: 2,
  }
}).then(res => {
  // output: res.result === 3
}).catch(err => {
  // handle error
})
QQ小程序 qq.cloud.init
QQ小程序 qq.cloud.uploadFile
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

QQ小程序 开发

硬件能力

QQ小程序 云开发

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }