将其他parameter passing给callback

我在执行SP的node.js中使用mssql:

var fnGetMapping = function(results) { new sql.Request(db.sqlConnection) .input('myParam', sql.VarChar(60), 'myValue') .execute('usp_MySP', fnProcessUUIDData); }; 

现在我的fnProcessUUIDData看起来像这样:

 var fnProcessUUIDData = function(err, recordsets) { if (err) { console.log("Error calling MS SQL: " + err.message); } else { if (recordsets[0].length > 0) { } else { }; } }; 

我现在需要的是将我自己的一个parameter passing给fnProcessUUIDData。

我读了一些文章 ,这是可能的,但我不能得到它在我的情况下工作,将不胜感激一些意见,如果我想要做的是可能的。

您可以使用apply来传递一些额外的参数,而不会丢失上下文。

 new sql.Request(db.sqlConnection) .input('myParam', sql.VarChar(60), 'myValue') .execute('usp_MySP', function(...args) { fnProcessUUIDData.apply(this, args.concat(some, extra, parameters)); }); var fnProcessUUIDData = function(err, recordsets, some, extra, parameters) { console.log(this, some, extra, parameters); }; 

使用apply overcomplicates的东西,因为fnProcessUUIDData是一个普通的旧function,而不是一个方法(它不使用this内部)。 所有你需要做的是把它包装在另一个function:

 new sql.Request(db.sqlConnection) .input('myParam', sql.VarChar(60), 'myValue') .execute('usp_MySP', function(err, recordsets) { fnProcessUUIDData(err, recordsets, additional_parameter); });