Как получить функцию для возврата в базы данных SQLite Javascript? - PullRequest
0 голосов
/ 10 декабря 2010

Я использую следующую функцию для выполнения SQL, она прекрасно работает, когда возврат не требуется, но если я сделаю запрос типа «SELECT * FROM table», он ничего не вернет. Функция:

function executeSQL(query)
{
  return db.transaction(function(q) 
  {    
    return q.executeSql(query, null, 
  function (q, results)
  {
   debug(results);
   return results;
  }, 
  function (q, error)
  {
   debug(error);
  }
 );
  });
}

И вот как я это называю:

results = executeSQL('SELECT * FROM `table`');

1 Ответ

1 голос
/ 10 декабря 2010

Функция транзакции является асинхронной: она не ждет, пока функция, которую вы задали в качестве параметра, не возвращает, и фактически, вероятно, ничего не возвращает.

Я не думаю, что можно написать функцию-обертку, которая возвращает результат, если вы не ждете в цикле, что проблематично для JavaScript, а также не рекомендуется.

function executeSQL(query, callback) {
    db.transaction(function(q) {
        q.executeSql(query, null, function (q, results) {
            callback(results);
        }, function (q, error) {
            debug(error);
        });
    });
}

var query = "SELECT 1";
executeSQL(query, function(result) {
    alert(result);
});
alert("When am I?"); // this may get called before alert(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...