阅读(1175) (8)

百度智能小程序 异步获取指定key内容

2020-08-13 15:49:23 更新

swan.getStorage

解释:从本地缓存中异步获取指定 key 对应的内容。

方法参数

Object object

object参数说明

属性名 类型 必填 默认值 说明

key

String

本地缓存中的指定的 key

success

Function

接口调用成功的回调函数。

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

success 返回参数说明

参数 类型 说明

data

Object/String/Number/Array

key 对应的内容

示例 

在开发者工具中打开



图片示例



代码示例

建议先使用 setStorage, 再使用 getStorage 。
<view class="wrap">
    <view class="card-area">
        <view class="list-area border-bottom">
            <label class="list-item-key-4">key</label>
            <input class="list-item-value" bindfocus="keyFocus" bindinput="keyInput" type="text" value="{{key}}" placeholder="请输入key" />
        </view>
        <view class="list-area border-bottom">
            <label class="list-item-key-4">value</label>
            <input class="list-item-value" bindfocus="valueFocus" bindinput="valueInput" type="text" value="{{value}}" placeholder="请输入value" />
        </view>
        <view>
            <button bindtap="setStorage" type="primary" hover-stop-propagation="true">存储数据</button>
            <button bindtap="getStorage" type="primary" hover-stop-propagation="true" disabled="{{disabled}}">读取数据</button>
        </view>
    </view>
</view>
Page({
    data: {
        key: '示例Key',
        value: '示例Value',
        disabled: true
    },
    keyInput(e) {
        this.setData('key', e.detail.value);
    },
    valueInput(e) {
        this.setData('value', e.detail.value);
    },
    valueFocus() {
        this.setData('value', '');
    },
    keyFocus() {
        this.setData('key', '');
    },
    setStorage() {
        let key = this.hasKey();
        if (!key) {
            return;
        }

        swan.setStorage({
            key,
            data: this.getData('value'),
            success: res => {
                this.toast('存储成功', 'none');
                this.setData('disabled', false);
            },
            fail: err => {
                this.toast('存储数据失败');
            }
        });
    },
    getStorage() {
        let key = this.hasKey();
        if (!key) {
            return;
        }

        swan.getStorage({
            key,
            success: res => {
                const data = res.data;
                if (data) {
                    swan.showModal({
                        title: '数据信息',
                        content: `${key}: ${data}`,
                        showCancel: false
                    });
                }
                else {
                    this.toast('找不到key对应的值');
                }
            },
            fail: err => {
                this.toast('读取数据失败');
            }
        });
    },
    hasKey() {
        let key = this.getData('key');
        if (key) {
            return key;
        }

        this.toast('key不能为空');
    },
    toast(title, icon = 'none') {
        swan.showToast({title, icon});
    }
});

Bug & Tip

  • 目前通过 swan.getStorage 获取一个未设置的 key 对应值时, 会回调 success 函数并返回空字符串, 该问题会在后续版本修复,请关注公告及文档说明。

错误码

Android

错误码 说明

201

解析失败,请检查调起协议是否合法

1001

执行失败

iOS

错误码 说明

202

解析失败,请检查参数是否正确