async call(obj, number=0){
const that = this
if(that.cloud == null){
that.cloud = new wx.cloud.Cloud({
resourceAppid: 'WXAAA', // 微信云托管环境所属账号,服务商appid、公众号或小程序appid
resourceEnv: 'prod-001', // 微信云托管的环境ID
})
await that.cloud.init() // init过程是异步的,需要等待init完成才可以发起调用
}
try{
const result = await that.cloud.callContainer({
path: obj.path, // 填入业务自定义路径和参数,根目录,就是 /
method: obj.method||'GET', // 按照自己的业务开发,选择对应的方法
// dataType:'text', // 如果返回的不是json格式,需要添加此项
header: {
'X-WX-SERVICE': 'xxx', // xxx中填入服务名称(微信云托管 - 服务管理 - 服务列表 - 服务名称)
// 其他header参数
}
// 其余参数同 wx.request
})
console.log(`微信云托管调用结果${result.errMsg} | callid:${result.callID}`)
return result.data // 业务数据在data中
} catch(e){
const error = e.toString()
// 如果错误信息为未初始化,则等待300ms再次尝试,因为init过程是异步的
if(error.indexOf("Cloud API isn't enabled")!=-1 && number<3){
return new Promise((resolve)=>{
setTimeout(function(){
resolve(that.call(obj,number+1))
},300)
})
} else {
throw new Error(`微信云托管调用失败${error}`)
}
}
}
这个是官方给的resourceEnv请求模板,这个最慢
另外尝试使用wx.request封装请求 云环境公网测试域名https://xxx.sh.run.tcloudbase.com 会快一些
同样使用wx.request封装请求,不使用云托管,接口命名不一样,实际请求是同一Api,请求我们自己的服务器,基本在100ms
为什么使用了微信云托管,反而waiting时间变得很长,响应速度变慢?