在使用小程序云开发时,写云函数是不可避免的,但对于新手而言,异步回调终归很头疼,这里我总结了下三种写法,首先是我比较推荐的写法(懒人写法),直接使用 async/await
将异步变为同步执行,最后返回结果
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
// 云函数入口函数
exports.main = async(event, context) => {
/**
* 根据 id 获取具体的信息
*/
result = await db.collection('detail').where({
_id: event.id
}).get()
return result
}
接下来就是使用Promise
,then
的方式是比funciton
的方式更为推荐的:
return new Promise((resolve, reject) => {
db.collection('detail').where({
_id: event.id
}).get().then(res => {
resolve(res)
})
})
最后则是function
的方式:
return new Promise((resolve, reject) => {
result = db.collection('detail').where({
_id: event.id
}).get({
success: function (res) {
return res
}
})
resolve(result)
})
很显然这种方式相对麻烦,因为resolve
方法在function
中并不能直接用,因此不太建议使用该种方法,至于原理,大家可以自行去了解,阮一峰的博客对Promise
也有很详细的解释。
此处列出三种方法主要是供有兴趣的朋友参考。