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

Node.js return variable used in callback

本文关键字:返回 变量 js 回调 Node      更新时间:2023-09-26

在一些模块中,我看到了这种在回调中初始化变量的奇怪方式。
这个特殊的例子来自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 s。

这个东西是怎么工作的?

回调是异步的,这意味着它不会立即运行。正因为如此,它被放置在一个队列中,并在解释器不做任何事情时运行。例如,试试这个:

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