在某些模块中,我看到了这种初始化回调中使用的变量的奇怪方式
此特定示例来自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
之后无法运行任何东西。
那么这件事有什么作用呢?
答案 0 :(得分:4)
回调是异步的,这意味着它不会立即运行。因此,只要解释器没有执行任何操作,它就会被放入队列中并运行。例如,试试这个:
var connection = new sql.Connection(config, function(err) {
console.log('I run second');
});
console.log('I run first');