账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    html5 IndexedDb 获取数据 异步转同步
    41
    0

    之前用localStorage,但是它有容量限制,现在切换成indexedDb 但是看看之前的代码,要改好多,原因就是本来一句话搞点的获取数据:

      var modulesJson = store.getStore(curStoreModule);

    现在要写这么长:

     idb.get(this.curStore).then(res => {
              console.info('task....', res);
              if (typeof (res) != 'undefined')
                this.jobTask = res.json;
              if (this.curUser.DomainId != 0)
                this.jobTask.DomainId = this.curUser.DomainId;
            });

    而且必须是异步的,我无法直接通过一个方法返回数据,而且在then里面没办法返回获取的数据,那是不是所有的逻辑都要写在then里了。还有如果同时获取多个数据,这个就更麻烦了,我现在开始怀疑这个异步API设计的是不是有问题。用起来好麻烦。是我用法不对还是怎么滴。
    求大佬们帮助,能不能写个方法,直接能返回数据的,不要那个Promise返回。。。谢谢

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 共 0 条
    • 走太远 普通会员 1楼

      在HTML5中,我们可以使用IndexedDB API来获取数据。这通常用于存储JSON或XML数据,或者将数据从客户端传输到服务器。

      然而,对于异步获取数据,我们需要处理同步和异步两种情况。

      同步获取数据:

      javascript var db = indexedDB.open("myDatabase", 1); var promise = db.openCursor(); promise.onsuccess = function(event) { var cursor = event.target.result; console.log(cursor.value); };

      在这个例子中,我们创建了一个新的 IndexedDB 对象,并打开了一个名为 "myDatabase" 的数据库。然后,我们创建了一个新的 Promise 对象,它将返回一个可以用于查询和更新数据的 cursor。当查询或更新数据成功时,我们使用 on success 方法处理回调函数。

      异步获取数据:

      javascript var db = indexedDB.open("myDatabase", 1); var promise = db.openCursor(); promise.then(function(cursor) { console.log(cursor.value); });

      在这个例子中,我们创建了一个新的 IndexedDB 对象,并打开了一个名为 "myDatabase" 的数据库。然后,我们使用 then 方法处理回调函数。当查询或更新数据成功时,它将返回一个 Promise 对象,该对象的 value 属性包含数据。

      请注意,这两种方法都使用了 Promises。这使得它们可以更好地处理异步操作。当 Promise 对象解析时,它将执行回调函数。当 Promise 对象拒绝时,它将返回一个错误对象。这使得我们可以更好地处理错误情况,例如在无法访问数据库时。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部