带参数的Javascript回调函数
电话:带参数的Javascript回调函数,javascript,callback,Javascript,Callback,电话: Query.GetDepartments(AcademicYears, function (result) { console.log(result) }) 职能: exports.GetDepartments = function (callback, AcademicYears) { CountAcademicYears = Object.keys(AcademicYears).length;
Query.GetDepartments(AcademicYears, function (result) {
console.log(result)
})
职能:
exports.GetDepartments = function (callback, AcademicYears) {
CountAcademicYears = Object.keys(AcademicYears).length;
switch (CountAcademicYears) {
case 1:
AcademicYear1 = AcademicYears[0].Year;
AcademicYear1 = String(AcademicYear1);
query = "SELECT [p_departement], [depcode], [departement], [schooljaar] FROM [SA_Departement] WHERE schooljaar='" + AcademicYear1 + "'";
console.log(query);
(async function () {
try {
let result = await globalConnectionInfordat.request()
.query(query);
callback(result.recordset);
} catch (err) {
console.log(err);
}
})();
break;
..........
}
}
这给了我一个错误:
'Incorrect syntax near the keyword \'function\'.',
由于某种原因,字符串没有被正确地读出(我想)?有什么想法吗
我只需要知道如何将参数传递给函数
编辑
出于某种原因,我不得不将这些词移动:函数(Academicyears,callback)正在工作
谢谢你的帮助 回调是一个局部变量。它只存在于
函数(查询、回调){/*…*/}
中
您不能从该函数外部使用它(即,在传递给ExecuteSql
的匿名函数中)
您需要创建对该函数的另一个引用,然后使用该名称:
this.ExecuteSql("SELECT ...", function a_named_function (result) {
a_named_function(result);
});
…但递归调用该函数毫无意义。根据“ExecuteSql”的定义,它接受2个参数。
1.字符串2。功能
因此,当您调用该模块时
应该是:
this.ExecuteSql("your string", function (result) {
console.log(result);
});
希望这对您有所帮助。这里的回调函数是
function(result){/*do stuff with result*/}
,而不是在回调函数中引用callback
,因为这是另一个方法ExecuteSql
的私有函数。它的工作方式是:将函数作为第二个参数传递,您不能选择何时调用它或将哪个参数传递给它。您的函数将存储在回调
本地变量中(这是导出的方式。ExecuteSql
控制何时执行以及输入内容)。在函数中,您可以随意使用result
,但是callback
在此未定义,但该函数中定义了callback,因为该函数也是通过回调调用的?一点也不,您作为参数传递的函数将是callback
的值。“callback”不是javascript关键字,它只是一个变量(实际上是getDepartments
的参数)。它也可以被命名为“c”或“dog”,并用“c(result.recordset)”或“dog(result.recordset)”调用。当然,这个参数只适用于这个函数getDepartments。在这个问题的新版本中,您在定义和调用之间切换了回调
和回调
,因此它不会起作用。是的,我现在得到了更好的回调想法!但问题是(我想)如果你明白我的意思的话,我回叫了《盗梦空间》?我现在修改了代码,这样就没有了《盗梦空间》,现在它可以完美地工作了!谢谢这不会改变错误,错误不是关于回调,而是关于函数本身的回调。ExecuteSql(“您的字符串”,函数(结果){anathor_回调(结果);});函数anathor_callback(data){console.log(data);}是的,我正在修改我的代码,这样就没有“inception”。请看一下更新后的问题,它仍然给出了一个错误。错误来自函数本身?@Milan_w-什么错误?它现在应该抛出一个错误,比如“超出调用堆栈”,因为您正在无条件地递归调用函数,正如我在回答中所说的,这毫无意义。我更改了代码。我认为回调中的回调永远不会起作用。你能看看更新后的代码吗?这给了我一个新的错误,我不明白为什么?@Milan\u w-如果你想问一个关于新代码的新错误消息的新问题……那么