node.js – 全局variables不工作?
我有个问题。 日志说variables“gData”没有定义。 但在我看来,它一定是因为它的全球性? 你能帮忙吗?
function refreshGroupData(){ groupModel.count(function(err, count){ gData = count; io.sockets.emit( 'sendGroupData', gData); }); console.log ('Test: ' + gData); }
谢谢你,罗伯特
编辑:
function refreshGroupData(){ function test(callback){ groupModel.count(function(err, count){ callback(count) }); } test(function(count) { io.sockets.emit( 'sendGroupData', count); console.log('Test: ' + count); }); }
问题是你在设置之前引用了全局gData
variables的值。
因为你不声明gData
,所以直到gData = count;
才能评估它的值gData = count;
被执行。 由于该行是在asynchronous的groupModel.count(...)
callback中执行的,因此在执行console.log(...)
行之前执行该行。
如果您在callback中移动console.log
调用,它将起作用。
function refreshGroupData() { groupModel.count(function(err, count) { gData = count; io.sockets.emit('sendGroupData', gData); console.log('Test: ' + gData); }); }
做这种事的正确方法是这样的:
function refreshGroupData(callback) { groupModel.count(function(err, count) { io.sockets.emit('sendGroupData', count); callback(count); }); } // Calling the function and logging the result. refreshGroupData(function(count) { console.log('Test: ' + count); });
gDatavariables在匿名函数内部,所以它是本地函数。
- Mongoose文档错误? 模型保存()numberAffected 1更新而创造?
- 对于模型“users”Mongoose Mongodb,在path“_id”上投射为数值“XXX”失败
- Mongodb时间戳非常不准确 – mongoose
- Mongooseasynchronous/等待与Koa卡住await Model.findOne()。exec()
- 让所有的领域需要mongoose
- 如何重新注册(或删除)现有的Mongoose模式/模型?
- 是否有可能使一个asynchronous函数返回一个mongoose查询而不是一个承诺?
- mongoose输出错误“错误:连接closures”
- Mongoose API文档中的#是什么?