2

遇到一个非常奇怪的问题,可能是我的 IDE WebStorm 特有的,因为在终端中通过节点执行时我无法重现此问题。在下面的示例中:

r = require('rethinkdb');

var connection = null;
r.connect({host: 'localhost', port: 28015}, function(err, conn) {
    if (err) throw err;
    connection = conn;
});

console.log(connection);

当我尝试在回调之外记录结果时,我的连接全局变量为“null”。但是,当我从回调中记录对象时:

var connection = null;
r.connect({host: 'localhost', port: 28015}, function(err, conn) {
    if (err) throw err;
    connection = conn;
    console.log(connection);
});

我展示了一个连接 JSON 对象。这似乎是一个简单的范围界定问题,我似乎无法弄清楚。

4

1 回答 1

3

这是预期的行为。

Node.js 使用 JavaScript,因此以异步方式运行您的代码。

您的第一个片段中发生的事情是

  • r 已初始化
  • 您尝试打开连接
  • 打印连接
  • 稍后,从您的回调中为连接分配 conn
于 2014-01-26T06:10:05.003 回答