weex的storage如何实现同步获取item

查看:124
本文介绍了weex的storage如何实现同步获取item的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

怎么使用storage的getItem()方法同步获取存储的数据,因为异步执行带来了很多的不便,特么是在封装函数,将取到的值作为返回值时
如以下函数:

const serverPath = async function serverPath() {
  const apiBase = '';
  const storage = weex.requireModule('storage');
   storage.getItem('apiBase', (e) => {
      apiBase = e.url;
    });
  return apiBase;
};

这只是一种形式,我只想在拿到本地数据,并返回。

想知道有没有什么比较好的方式来解决这个问题。我在iOS中发现有同步函数,但是发现SDK的实现方式都是使用block返回的。这样同样无法很好地处理返回值的问题

解决方案

/**
 * 获取缓存
 * @param key
 */
export function get_cache(key) {
    return new Promise(function (resolve) {
        try {
            storage.getItem(key, e => {
                if (e.result === 'success') {
                    resolve(e.data);
                    console.info(`获取缓存key='${key}'成功,result=`, e);
                } else {
                    resolve(false);
                    console.warn(`获取缓存key='${key}'失败,result=`, e);
                }
            });
        } catch (e) {
            console.error(`获取缓存key='${key}'出现异常! >>>` + e.toString());
            resolve(false);
        }
    });
}

使用时

get_cache('token')
.then(r => {
    
});

因为我这边的基本都把这些方法封装成了promise对象,所以实际业务操作中就只是组合连接这些promise操作

这篇关于weex的storage如何实现同步获取item的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆