Web SQL游戏 - 将额外的参数传递给匿名函数

时间:2011-12-04 04:26:41

标签: javascript web-sql

我正在尝试制作一个javascript游戏,而我正在使用WebSQL来存储游戏数据。我创建了自己的数据库选择函数,它格式化查询结果,然后返回它们。

在这个特定实例中,我将返回的对象传递给outcome函数。我还想传入另外两个变量,但我不断收到此错误“Uncaught ReferenceError:planetInfo未定义”。如果有人可以帮助它会非常感激。先谢谢你。

我也尝试过使用“selectRowPlanets('query',results(shipInfo,arrivalNumber));”,但仍然没有运气。

/** db.js **/ 
function selectRowPlanets(query, callBack){ // <-- extra param
  var result = [];
  db.transaction(function (tx) {
    tx.executeSql(query, [], function(tx, rs){
      for(var i=0; i<rs.rows.length; i++) {
        var row = rs.rows.item(i);
          result[i] = { id:          row['id'],
                        name:        row['name'],
                        owner:       row['owner'],
                        colum:       row['colum'],
                        row:         row['row'],
                        ships:       row['ships'],
                        production:  row['production'],
                        percent:     row['percent']
        }
      }
      callBack(result); // <-- new bit here
    }, errorHandler);
  });
}


/** function.js **/
function selectDestination(shipInfo, arrivalNumber) {
    selectRowPlanets('SELECT * FROM planets', outcomes(planetInfo, shipInfo, arrivalNumber));
}   

function outcomes(planetInfo, shipInfo, arrivalNumber){
        console.log(arguments);
}

1 个答案:

答案 0 :(得分:1)

运行此代码时:

selectRowPlanets('query', outcomes(shipInfo, arrivalNumber));

outcomes(shipInfo, arrivalNumber)输出作为回调传递,而不是实际函数。

创建一个调用代码的匿名函数包装器:

selectRowPlanets('query', function() { outcomes(shipInfo, arrivalNumber) });