当前位置:  开发笔记 > 编程语言 > 正文

获取Webkit executeSql事务以返回值

如何解决《获取WebkitexecuteSql事务以返回值》经验,为你挑选了2个好方法。

如何才能返回以下JavaScript row以便我可以在事务外访问它?所有Apple的示例代码似乎都在事务中将HTML写入浏览器,而不是将数据传递回调用函数.

沿着:

function getData() {
  db.transaction(function(tx) {
    tx.executeSql("SELECT id FROM table LIMIT 1", [], function(tx, result) {
      row = result.rows.item(0);
    }, function(tx, error) {
    });
  });

  return row;
}

这甚至可能吗?Webkit存储API可以设置为同步而不是异步执行吗?



1> Bjorn..:

我认为你想在这里创建一个闭包,因为在你可以访问它们之前,值被垃圾收集/移出范围链.传递row给一个闭包以便以后访问,或者传递给一些其他函数,这些函数可以处理仍然在范围内的值.

更多信息:使用闭包



2> 小智..:

我意识到这是一个非常古老的问题,但我在搜索如何处理JavaScript异步SQLite调用时发现了它.问题和我的一样,我找到了一个更好的答案(使用闭包扩展所选答案)

我的getData函数版本如下:

function get_option (option, get_option_callback){
    if (db === null){
       open_database();
    }
    db.transaction(function (tx) {
        tx.executeSql("SELECT rowid,* FROM app_settings WHERE option = ? ", [option],            
        function(tx, result){
            item = result.rows.item(0);
            get_option_callback(item.value);
            return;
         }
       }, sql_err);
   });
}

然后调用我将使用的方法:

get_option("option name", function(val){
 // set the html element value here with val
 // or do whatever
 $('input[name="some_input"]').val(val);
});

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有