带参数的Javascript回调函数

时间:2017-05-31 12:19:25

标签: javascript callback

电话:

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)正在运行。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

callback是一个局部变量。它只存在于function (query, callback) { /* ... */ }内。

您无法在该函数外部使用它(即在您传递给ExecuteSql的匿名函数中)。

您需要创建该函数的另一个引用,然后使用该名称:

this.ExecuteSql("SELECT ...", function a_named_function (result) {
            a_named_function(result);
        });

...但递归调用该函数毫无意义。

答案 1 :(得分:0)

根据“ExecuteSql”的定义,它接受2个参数。 1.字符串2.功能。

所以当你打电话给那个模块时。

它应该是:

  this.ExecuteSql("your string", function (result) {
                   console.log(result);
                });

希望这对你有所帮助。