掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
支持端:小程序 , 云函數(shù)
成都創(chuàng)新互聯(lián)是專業(yè)的疏勒網(wǎng)站建設(shè)公司,疏勒接單;提供做網(wǎng)站、網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行疏勒網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
調(diào)用云函數(shù)
| 屬性 | 類型 | 默認(rèn)值 | 必填 | 說(shuō)明 |
|---|---|---|---|---|
| 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)值 | 必填 | 說(shuō)明 |
|---|---|---|---|---|
| env | string | 是 | 環(huán)境 ID,填寫后將忽略 init 時(shí)指定的環(huán)境 ID |
| 屬性 | 類型 | 說(shuō)明 |
|---|---|---|
| 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 下來(lái)的,可以是讀文件讀出來(lái)的等等
},
})
// 云函數(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: () => {
// ...
}
}) 
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流