簡體   English   中英

帶參數的Javascript回調函數

[英]Javascript callback function with parameter

電話:

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是一個局部變量。 它僅存在於function (query, 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);
                });

希望這對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM