新聞中心
Promise Cloud.callFunction(Object object)
支持端:小程序 , 云函數(shù)
成都創(chuàng)新互聯(lián)是專業(yè)的疏勒網(wǎng)站建設(shè)公司,疏勒接單;提供做網(wǎng)站、網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行疏勒網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
調(diào)用云函數(shù)
參數(shù)
Object object
| 屬性 | 類型 | 默認(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)用成功、失敗都會執(zhí)行) |
object.config 的結(jié)構(gòu)
| 屬性 | 類型 | 默認(rèn)值 | 必填 | 說明 |
|---|---|---|---|---|
| env | string | 是 | 環(huán)境 ID,填寫后將忽略 init 時指定的環(huán)境 ID |
返回值
Promise.
| 屬性 | 類型 | 說明 |
|---|---|---|
| result | any | 云函數(shù)返回的結(jié)果 |
| requestID | string | 云函數(shù)執(zhí)行 ID,可用于日志查詢 |
data 參數(shù)說明
如果 data 中包含大數(shù)據(jù)字段(建議臨界值 256KB),建議使用 wx.cloud.CDN 標(biāo)記大數(shù)據(jù)字段,標(biāo)記后在調(diào)用云函數(shù)時,該字段的內(nèi)容將會上傳至臨時 CDN,然后在云函數(shù)中接收到的該字段值將是 CDN url,可在云函數(shù)中下載訪問。通過這種方式,可以避免大數(shù)據(jù)傳輸造成的性能問題、及避免觸及調(diào)用鏈路的傳輸大小限制。
如果在 data 中如果傳入了 Buffer 類型的數(shù)據(jù),數(shù)據(jù)在 JSON 序列化的過程中會被轉(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ù),因為會讓數(shù)據(jù)體積增大,增加傳輸耗時,如果需要傳遞 Buffer,有兩種替代的建議方式:
- 若 Buffer 較大,可使用 wx.loud.CDN 方法標(biāo)記字段內(nèi)容
- 若 Buffer 非常小 (如 < 10k),可將 Buffer 轉(zhuǎn)成 base64 再調(diào)用
示例代碼
假設(shè)已有一個云函數(shù) add:
exports.add = (event, context, cb) => {
return event.x + event.y
}
在小程序端發(fā)起對云函數(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ā)起對云函數(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)用:
小程序端同時支持 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: () => {
// ...
}
}) 分享題目:創(chuàng)新互聯(lián)小程序教程:微信小程序云開發(fā)SDK文檔云函數(shù)
URL分享:http://fisionsoft.com.cn/article/djocdpp.html


咨詢
建站咨詢

