请教一个关于回调函数取值的问题

想用mongoose获取db中数据的总量,并把这个总量赋给其他变量

function count(cb){
     database.model('mesModel',mesSchema).find().count(function(err,num){
         cb(num)
     }
}
function key(x){
    return console(x)
}
count(key)//正常显示数字
var a = count(key)//undefined

如果给一个全局变量

var a 
function key(x){
    return a = x
}
console.log(a)//undefined

要怎样把count里面的num赋予外面的变量呢?

阅读 3.2k
3 个回答
function count(){
     return database.model('mesModel',mesSchema).find().count(function(err,num){
         return num
     }
}
var a = count();
console.log(a);

差不多这样就行。

补充:
突然想到这里的数据库操作应该是异步的,所以在全局同步的情况下了,应该是拿不到的OTL。

查询的操作是异步的,你打印a的时候,还没执行a=x,所以是 undefined

你应该是想用同步的写法,获取异步的结果

function count(){
  return database.model('mesModel',mesSchema).find().count();
}
async function someYouCode(){
  const num =  await count();
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题