当我调用云函数时, wx.cloud.callFunction() 在没有收到 success或 fail通知时就直接返回到调用方了.然后过一会 success: function (res) 又被调用一次, 我需要 调用 wx.cloud.callFunction()云函数后等待结果才返回给调用方.
给位大牛给分析下看看什么原因,谢谢!
云函数:
// 云函数入口函数
exports.main = async (event, context) => {
return{
serverTime: Date()
}
}
小程序函数:
function getServerTime() {
wx.cloud.callFunction({
// 云函数名称
name: 'getServerTime',
// 传给云函数的参数
data: {
},
success: function (res) {
var serverDate = new Date(res.result.serverTime);
return {
retValue: true,
date: serverDate
}
},
fail: function (res) {
return {
retValue: false,
date: null
}
}
})
}
module.exports.getServerTime = getServerTime
getServerTime函数应该采取回调函数的方式获取返回数据,不应该用return返回数据,你的数据返回方式用的是同步函数的方式,而网络请求明显是异步操作,如果在调用是使用XXX= getServerTime()的方式获取返回数据必然会获取到空值。
function getServerTime(callbak) {
wx.cloud.callFunction({
// 云函数名称
name: 'getServerTime',
// 传给云函数的参数
data: {
},
success: function (res) {
var serverDate = new Date(res.result.serverTime);
callbak( {
retValue: true,
date: serverDate
})
},
fail: function (res) {
callbak( {
retValue: false,
date: null
})
}
})
}
module.exports.getServerTime = getServerTime
在调用函数时使用
getServerTime(
function(res){
}
)
的方式获取返回数据