Игра Web SQL - передача дополнительных аргументов анонимной функции - PullRequest
0 голосов
/ 04 декабря 2011

Я пытаюсь создать игру на javascript и использую WebSQL для хранения игровых данных. Я создал свою собственную функцию выбора базы данных, которая форматирует результаты запроса и затем возвращает их.

В этом конкретном случае я передаю возвращенный объект в функцию результатов. Я хотел бы также передать две другие переменные, но я получаю эту ошибку «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 Ответ

1 голос
/ 04 декабря 2011

Когда вы запускаете этот код:

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

Выход из outcomes(shipInfo, arrivalNumber) передается как обратный вызов, а не как фактическая функция.

Сделать анонимнымфункция-обертка, которая вызывает ваш код:

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