请问各位大佬获取不到JS函数的返回值,请问如何解决,谢谢,下面是具体的代码:
1.函数:
queryCommentAmountByQId: function(qid, _question) {
var that = this
var amount = 0
const db = wx.cloud.database()
db.collection('commentsForForum').where({
questionId: qid,
}).get({
success: res => {
console.log(_question + ",查询评论数:" + res.data.length)//(2)
amount = res.data.length
}
})
return amount
//这里返回的真实结果是4
},
2.调用函数:
var _comments_amount = that.queryCommentAmountByQId(res.data[i]._id, _question)
//这里调用后获得结果是0
console.log(_question+"评论数=" + _comments_amount) //(1)
3.调用后的结果:
(1)console.log(_question+"评论数=" + _comments_amount)
forum.js? [sm]:175 你知道哪些关于励志方面的诗词评论数=0
(2) console.log(_question + ",查询评论数:" + res.data.length)
forum.js? [sm]:212 你知道哪些关于励志方面的诗词,查询评论数:4
4.问题:
请问这样为什么获取到JS函数的返回值
这是异步问题 因为 db.collection....没运行完毕 就返回了
所以返回结果是0
函数是可以得到正确结果的,但是在别的地方调用的时候获取不到这个返回值
请问该怎么解决呢
调用时加个回调
queryCommentAmountByQId: function(qid, _question,suc) {
var that = this
var amount = 0
const db = wx.cloud.database()
db.collection('commentsForForum').where({
questionId: qid,
}).get({
success: res => {
console.log(_question + ",查询评论数:" + res.data.length)//(2)
amount = res.data.length
suc(amount);
}
})
//这里返回的真实结果是4
},
调用
that.queryCommentAmountByQId(res.data[i]._id, _question,function(amount){
})
或者用
Promise
麻烦点而已
您好,我是改成下面这样的,最后结果出来显示的是undefined,
请问是哪里没有改对吗,谢谢
函数:
queryCommentAmountByQId: function (qid, _question, suc) {
var that = this
var amount = 0
const db = wx.cloud.database()
db.collection('commentsForForum').where({
questionId: qid,
}).get({
success: res => {
// console.log(_question + ",查询评论数:" + res.data.length)
amount = res.data.length
suc(amount);
}
})
// return amount
},
调用:
var _comments_amount = that.queryCommentAmountByQId(res.data[i]._id, _question, function (amount) {
})
console.log(_question+"评论数=" + _comments_amount)
结果:
请写出含有“秋”的诗句评论数=undefined
queryCommentAmountByQId: function (qid, _question, suc) {
var that = this
var amount = 0
const db = wx.cloud.database()
db.collection('commentsForForum').where({
questionId: qid,
}).get({
success: res => {
// console.log(_question + ",查询评论数:" + res.data.length)
amount = res.data.length
suc(amount);
}
})
// return amount
},
调用:
that.queryCommentAmountByQId(res.data[i]._id, _question, function (amount) {
console.log(_question+"评论数=" + _comments_amount)
})
var _comments_amount = 0
that.queryCommentAmountByQId(res.data[i]._id, _question, function (amount) {
console.log(_question+"里面评论数=" + _comments_amount) //在函数里面可获取到值
_comments_amount = amount
})
console.log(_question+"外面评论数=" + _comments_amount) //在函数外面无法获取到值
在这样回调之后,可以在这个函数里面获取到值,但是我是想将这个获取到的值赋给函数外的变量,因为函数外还有一些值,我的目的是将这个函数里面获取到的值和函数外面的那些值组合在一起放到一个数组里面,还有关键的一点是回调函数外面还有一个for循环