将额外参数传递给WebSQL回调函数?

Bal*_*ool 5 javascript function callback web-sql

我用以下代码调用函数db.transaction:

    db.transaction(createSheetDB, function(){alert("Sheet creation error!")}, function(){alert("Sheet created!")});
Run Code Online (Sandbox Code Playgroud)

函数createSheetDB是一个回调函数,由db.transaction()隐式调用,它也传递一个参数tx.我已经实现了这样的函数createSheetDB(tx):

function createSheetDB(tx) {
var nextId = getNextId();
tx.executeSql("INSERT INTO SHEET(id, name, desc) VALUES("+nextId+",'"+sheetName+"','"+desc+"')", [], 
        function(){alert("Sheet row inserted!")}, 
        function(tx, err){alert("Sheet row insertion Error: "+err.message+" "+err.code)}
);}
Run Code Online (Sandbox Code Playgroud)

现在问题是sheetName和desc的值仅在调用函数中可用.如何将它们传递给函数createSheetDB(tx)?

Jos*_*osh 3

您可以使用一种技术来创建一个新的回调来关闭您想要的变量。

\n\n
function doStuff(callback) {\n    var val = 43;\n    callback(val);\n}\n\nfunction myCallback(val, anotherVal) {\n    alert("val: " + val + "\\nanotherVal: " + anotherVal);\n}\n\n(function() {\n\n    var anotherVal = "Whoa!",\n        anotherCallback = function(val) {\n            return myCallback(val, anotherVal);\n        };\n\n    doStuff(anotherCallback);\n\n}());\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n