QQ小程序 qq.cloud.callFunction

2020-07-10 16:56 更新

調(diào)用云函數(shù) qq.cloud.callFunction 方法的定義如下:

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

object: Object

屬性 類型 默認值 必填 說明
name string 云函數(shù)名
data Object 傳遞給云函數(shù)的參數(shù),在云函數(shù)中可通過 event 參數(shù)獲取
config Object 配置

object.config 的結(jié)構(gòu)

屬性 類型 默認值 必填 說明
env string 環(huán)境 ID,填寫后將忽略 init 時指定的環(huán)境 ID

返回值

Promise.<Object>

屬性 類型 說明
result any 云函數(shù)返回的結(jié)果
requestID string 云函數(shù)執(zhí)行 ID,可用于日志查詢

data 參數(shù)說明 在 data 中如果傳入了 Buffer 類型的數(shù)據(jù),數(shù)據(jù)在 JSON 序列化的過程中會被轉(zhuǎn)成 {},以小程序端調(diào)用為例:

// 小程序端調(diào)用
qq.cloud.callFunction({
  // ...
  data: {
    buf: ArrayBuffer // 此處填入了某種方式獲取得到的 Buffer 數(shù)據(jù),可以是 request 下來的,可以是讀文件讀出來的等等
  },
})
// 云函數(shù)端收到的 event 參數(shù)的結(jié)構(gòu):
{
  "buf": {},
}

這里應(yīng)當(dāng)避免傳入 Buffer 類型的數(shù)據(jù),因為直接傳輸buffer數(shù)組JSON串會讓數(shù)據(jù)體積增大,增加傳輸耗時,如果需要傳遞 Buffer,有兩種替代的建議方式:

  1. 若 Buffer 較大,可先上傳至文件存儲空間,然后調(diào)用云函數(shù)的時候傳遞 fileID / 文件 URL 而不是 Buffer,再在云函數(shù)中下載下來
  2. 若 Buffer 非常小 (如 < 10k),可將 Buffer 轉(zhuǎn)成 base64 再調(diào)用

示例代碼 假設(shè)已有一個云函數(shù) add:

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

在小程序端發(fā)起對云函數(shù) add 的調(diào)用:

qq.cloud.callFunction({
  // 要調(diào)用的云函數(shù)名稱
  name: 'add',
  // 傳遞給云函數(shù)的event參數(shù)
  data: {
    x: 1,
    y: 2,
  }
}).then(res => {
  // output: res.result === 3
}).catch(err => {
  // handle error
})
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號