Node.js返回回调中使用的变量

时间:2015-10-01 16:54:46

标签: javascript node.js

在某些模块中,我看到了这种初始化回调中使用的变量的奇怪方式 此特定示例来自mssql模块:

var sql = require('mssql'); 
var connection = new sql.Connection(config, function (err) {

    var request = new sql.Request(connection);
    request.query('select 1 as number', function (err, recordset) {
        // do something
    });
});

对我来说很奇怪的是connection在回调中使用,好像它已经被初始化了,实际上它是。
但是我认为callback应该在函数sql.Connection()执行return之前运行。事实上,在return之后无法运行任何东西。

那么这件事有什么作用呢?

1 个答案:

答案 0 :(得分:4)

回调是异步的,这意味着它不会立即运行。因此,只要解释器​​没有执行任何操作,它就会被放入队列中并运行。例如,试试这个:

var connection = new sql.Connection(config, function(err) {
    console.log('I run second');
});
console.log('I run first');