假设我有这样的脚本
var a = getData();
function getData() {
if (some_condition) { // Do this }
else {// Do this }
return fetchFromDB(param);
}
function fetchFromDB(param) {
db.transaction(function (tx) {
tx.executeSQL("SELECT foo FROM bar WHERE column = ? ", [param], function (tx, res) {
return res.rows.item(0).foo
});
});
}
问题是 tx.executeSQL 是异步的,因此 fetchFromDB() 方法返回 undefined 给调用者,即 getData(),同样的 undefined 被传递回主函数。为避免这种情况,我需要在 fetchFromDB() 中有一个回调,例如
tx.executeSQL("SELECT foo FROM bar WHERE column = ? ", [param], function (tx, res) {
callBack1(res.rows.item(0).foo);
});
所以现在值返回给 getData() 但我需要在这里有一个回调 2 来返回主函数,它也从回调 1 返回数据。通过这种方式,我似乎需要在我打电话的地方进行回调。当然,我在这里遗漏了一些东西!如何限制一个回调?