调用couchdb函数外的variables?

我有很多麻烦得到couchdb的响应处理程序做任何有用的node.js和now.js。 我的目标是回复客户或小组,并发现某些信息,这些信息也是从客户那里发现的。

everyone.now.login = function(){ var username = this.now.lusername; var password = this.now.lpassword; var test; db.get(this.now.lusername, function (err, doc, test, username) { if (err) { console.log(+ username + " doesn't exist!"); } else { console.log('Found user!'); console.log(doc); test = 1; } }); console.log(test); } 

我在这里使用testing作为例子。 我在db.get之外声明它,在里面分配一个值来反馈,但是当console.log在外面运行时,它没有值。

我只是没有得到它或者是错的?

(我释放我可以使用doc。(无论什么值),但有一个特定的variables,我想传递给客户之外的这个调用)

testvariables在console.log没有值,因为CouchDB响应尚未到达。 您的loginfunction执行以下步骤。

  1. 设置一些variables( usernamepasswordtest未定义)
  2. 开始CouchDB提取(为this.now.lusername )与一个函数分配完成后运行
  3. 运行console.log(test) ,它仍然是未定义的
  4. CouchDB响应完成,并从第2步运行您的function

我为这样的事情做的是使用函数调用。

 everyone.now.login = function(){ var username = this.now.lusername; var password = this.now.lpassword; db.get(this.now.lusername, function (err, doc, test, username) { if (err) { console.log(+ username + " doesn't exist!"); } else { console.log('Found user!'); console.log(doc); login_complete(doc); } }); function login_complete(doc) { console.log('The login finished! Doc is ' + doc) } } 

这样代码仍然看起来是正确的(代码的“故事”大部分是从上到下),但它也正确执行login_complete()函数只有在login实际完成后才运行)。