可以这样创建云函数
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => new Promise((resolve, reject) => {
setTimeout(() => {
resolve(event.a + event.b)
}, 3000)
})
然后本地的js这样调用云函数
Page({
data: {},
onLoad: function (options) {
console.log( Date.now())
console.log("开始调用")
wx.cloud.callFunction({
name: 'promiseTest',
data:{a:1,b:2}
}).then((res)=>{
console.log("得到结果", res);
console.log(Date.now())
})
}
});
三秒过后控制台即可显示出结果
但是,有时候promise函数主体内运行的代码也要等待的时候(比如,操作数据库,等待返回结果)
let rawData = await db.collection('goods').doc(event._id).get();
需要有这个关键词await,那么我们就可以将云函数改成这样
exports.main = async (event, context) => new Promise(async (resolve, reject) => {
let rawData = await db.collection('goods').doc(event._id).get();
resolve(rawData);
})
这样无论花多长时间,都能等到正确的返回结构