W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
支持端:小程序 , 云函數(shù)
調(diào)用云函數(shù)
屬性 | 類型 | 默認(rèn)值 | 必填 | 說明 |
---|---|---|---|---|
name | string | 是 | 云函數(shù)名 | |
data | Object | 否 | 傳遞給云函數(shù)的參數(shù),在云函數(shù)中可通過 event 參數(shù)獲取 | |
config | Object | 否 | 配置 | |
success | function | 否 | 接口調(diào)用成功的回調(diào)函數(shù) | |
fail | function | 否 | 接口調(diào)用失敗的回調(diào)函數(shù) | |
complete | function | 否 | 接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會(huì)執(zhí)行) |
object.config 的結(jié)構(gòu)
屬性 | 類型 | 默認(rèn)值 | 必填 | 說明 |
---|---|---|---|---|
env | string | 是 | 環(huán)境 ID,填寫后將忽略 init 時(shí)指定的環(huán)境 ID |
屬性 | 類型 | 說明 |
---|---|---|
result | any | 云函數(shù)返回的結(jié)果 |
requestID | string | 云函數(shù)執(zhí)行 ID,可用于日志查詢 |
如果 data 中包含大數(shù)據(jù)字段(建議臨界值 256KB),建議使用 wx.cloud.CDN 標(biāo)記大數(shù)據(jù)字段,標(biāo)記后在調(diào)用云函數(shù)時(shí),該字段的內(nèi)容將會(huì)上傳至臨時(shí) CDN,然后在云函數(shù)中接收到的該字段值將是 CDN url,可在云函數(shù)中下載訪問。通過這種方式,可以避免大數(shù)據(jù)傳輸造成的性能問題、及避免觸及調(diào)用鏈路的傳輸大小限制。
如果在 data 中如果傳入了 Buffer 類型的數(shù)據(jù),數(shù)據(jù)在 JSON 序列化的過程中會(huì)被轉(zhuǎn)成 { "type": "Buffer", data: number[] } 的格式,以小程序端調(diào)用為例:
// 小程序端調(diào)用
wx.cloud.callFunction({
// ...
data: {
buf: ArrayBuffer // 此處填入了某種方式獲取得到的 Buffer 數(shù)據(jù),可以是 request 下來的,可以是讀文件讀出來的等等
},
})
// 云函數(shù)端收到的 event 參數(shù)的結(jié)構(gòu):
{
"type": "Buffer",
"data": [ 17, 371, 255, ... ] // Uint8 Array
}
因此應(yīng)當(dāng)避免傳入 Buffer 類型的數(shù)據(jù),因?yàn)闀?huì)讓數(shù)據(jù)體積增大,增加傳輸耗時(shí),如果需要傳遞 Buffer,有兩種替代的建議方式:
假設(shè)已有一個(gè)云函數(shù) add:
exports.add = (event, context, cb) => {
return event.x + event.y
}
在小程序端發(fā)起對(duì)云函數(shù) add 的調(diào)用:
wx.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
})
在云函數(shù)端任意云函數(shù)發(fā)起對(duì)云函數(shù) add 的調(diào)用(完整云函數(shù)代碼示例):
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
exports.main = async (event, context) => {
const res = await cloud.callFunction({
// 要調(diào)用的云函數(shù)名稱
name: 'add',
// 傳遞給云函數(shù)的參數(shù)
data: {
x: 1,
y: 2,
}
})
// 3
return res.result
}
小程序端 callback 風(fēng)格調(diào)用:
小程序端同時(shí)支持 Callback 風(fēng)格調(diào)用,如上 Promise 風(fēng)格的調(diào)用可以用 Callback 風(fēng)格改寫:
wx.cloud.callFunction({
// 要調(diào)用的云函數(shù)名稱
name: 'add',
// 傳遞給云函數(shù)的參數(shù)
data: {
x: 1,
y: 2,
},
success: res => {
// output: res.result === 3
},
fail: err => {
// handle error
},
complete: () => {
// ...
}
})
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: