一、简介

AsyncStorage是一个简单的具有异步特性可持久化的键值对key-value的存储系统。它对整个APP而言,是一个全局的存储空间,可以用来替代H5中提供的window属性LocalStorage。AsyncStorage跟iOS中的偏好设置NSUserDefault很类似,也是通过plist列表实现存储。AsyncStorage和LocalStorage的用法基本相同。这里对LocalStorage的介绍简单地一笔带过,基本使用如下:

//获取localStorage
var storage = window.localStorage; //使用 localStorage.setItem() 向其添加数据项
storage('name', 'XYQ'); //读取 localStorage 项目
var name = storage.getItem("name"); //删除 localStorage 项目
storage.removeItem("name");

二、API

AsyncStorage提供的函数或方法比较齐全,每一个方法都有一个回调函数。函数的第一个参数都是错误对象,如果发生错误,里面会包裹着错误信息,否则返回空值null。所有的方法执行后,都会返回一个Promise对象,这个对象是ES6中的新特性函数,即ES6 Promise异步构造函数。具体的方法如下所示:

//根据键名获取键值,获得结果会在回调函数中
getItem: function(
key: string,
callback?: ?(error: ?Error, result: ?string) => void
):Promise{} //设置键值对
setItem: function(
key: string,
value: string,
callback?: ?(error: ?Error) => void
):Promise{} //移除键值对
removeItem: function(
key: string,
callback?: ?(error: ?Error) => void
): Promise{} //合并键值对
mergeItem: function(
key: string,
value: string,
callback?: ?(error: ?Error) => void
): Promise{} //清除所有键值对
clear: function(callback?: ?(error: ?Error) => void
): Promise{} //获取所有键名
getAllKeys: function(callback?: ?(error: ?Error, keys: ?Array<string>) => void
): Promise{} //获取多项键值对,其中keys是字符串数组
multiGet: function(
keys: Array<string>,
callback?: ?(errors: ?Array<Error>, result: ?Array<Array<string>>) => void
): Promise{} //设置多项键值对,其中keyValuesParis是字符串二维数组
multiSet: function(
keyValuePairs: Array<Array<string>>,
callback?: ?(errors: ?Array<Error>) => void
): Promise{} //移除多项键值对,其中keys是字符串数组
multiRemove: function(
keys: Array<string>,
callback?: ?(errors: ?Array<Error>) => void
): Promise{} //合并多项键值对,其中keyValuesParis是字符串二维数组
multiMerge: function(
keyValuePairs: Array<Array<string>>,
callback?: ?(errors: ?Array<Error>) => void
): Promise{}

三、使用

实现文件:

/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/ import React, { Component } from 'react'; import {
AppRegistry,
StyleSheet,
View,
AsyncStorage
} from 'react-native'; export default class ReactNativeDemo extends Component { constructor(props){
super(props); //设置键值对
AsyncStorage.setItem("name","XYQ", null);
AsyncStorage.setItem("gender","male", null);
AsyncStorage.setItem("age","",function (error) {
if (error) console.log(`--${error}--`)
}); //取出键值对
AsyncStorage.getItem("name",function (error, result) {
if (error) console.log(`--${error}--`)
console.log(`result is ${result}`)
}); //取出所有的键名
AsyncStorage.getAllKeys(function (error, keys) {
keys.map((keyName, i) => {
key=;
console.log(`key is ${keyName}`)
});
});
} render() {
return (
<View style={styles.flex}>
</View>
);
}
} const styles = StyleSheet.create({
flex: {
flex:
}
}); AppRegistry.registerComponent('ReactNativeDemo', () => ReactNativeDemo);

结果如下:

-- ::35.771 [info][tid:com.facebook.react.JavaScript] result is XYQ
-- ::35.771 [info][tid:com.facebook.react.JavaScript] key is name
-- ::35.772 [info][tid:com.facebook.react.JavaScript] key is age
-- ::35.772 [info][tid:com.facebook.react.JavaScript] key is gender

ReactNative: 使用AsyncStorage异步存储类的更多相关文章

  1. python连接数据库异步存储

    当同步写入数据库时,可能会发生下载速度很快,但是写入速度很慢的情况,因此我们采用异步存储写入数据库. 实现异步写入mysql数据库的思路: 1,将数据库的连接数据写入到settings文件中,供后面自 ...

  2. C# 异步工具类 及一点小小的重构经验

    2015年新年第一篇随笔, 祝福虽然有些晚,但诚意还在:新年快乐. 今天主要是想分享一异步工具类,在C/S架构中.先进行网络资源异步访问,然后将回调函数 Invoke到UI线程中进行UI处理. 这样的 ...

  3. 使用异步存储提升 Web 应用程序的离线体验

    localForage 是一个 JavaScript 库,通过使用简单的.类似 localStorage 风格的 API 实现异步存储,帮助你提升 Web 应用程序的离线经验(通过 IndexedDB ...

  4. [转]mvc3 使用session来存储类来存储用户登陆信息

    mvc3 使用session来存储类来存储用户登陆信息 2013-08-26 09:48:56|  分类: NET开发 |举报 |字号 订阅   项目之前的登陆机制是这样的:用户登陆后初始化一个类,类 ...

  5. 【C语言学习笔记】存储类、链接和内存管理

    因为对内存管理部分一直没有很清楚的思路,所以一直在找资料想系统看一下这部分的内容.在C primer plus里看到了这一章,虽然大多都是心知肚明的东西,但是还是很多概念性系统性的东西让我眼前一亮,把 ...

  6. SQLite存储类(数据类型)

    SQLite数据类型更普遍,采用动态类型系统. 说是数据类型,更像是存储类,如:INTEGER存储类就包含多种不同长度的整数数据类型 [INTEGER]带符号的整数类型 [REAL]浮点值,小数类型 ...

  7. C Primer Plus之存储类、链接和内存管理

    存储时期即生存周期——变量在内存中保留的时间 变量的作用域和链接一起表明程序的哪些部分可以通过变量名来使用该变量. 注意:生存期和作用域是两个不同的概念. 作用域    作用域描述了程序中可以访问一个 ...

  8. C中存储类、链接和内存管理

    在C语言中,有5种不同的存储类型,即存储类.在介绍存储类之前,需要首先简单介绍几个术语.如下: 作用域:描述程序中可以访问一个标识符的一个或多个区域.一个C变量的作用域可以是代码块作用域.函数原型作用 ...

  9. Android(java)学习笔记174:SharedPreferences(轻量级存储类)

    1.SharedPreferences是Android平台上一个轻量级的存储类,简单的说就是可以存储一些我们需要的变量信息.2个activity 之间的数据传递除了可以他通过intent来传递数据,还 ...

随机推荐

  1. CentOS6下安装zabbix3.4

    安装环境 系统 Centos6.7,最小化安装 CPU 2核 内存 2G 硬盘 200G IP 192.168.100.168/24 主机名 zabbix Zabbix版本 3.4 数据库 mysql ...

  2. Find命令、文件名后缀、Linux和Windows互传文件 使用介绍

    第2周第5次课(3月30日) 课程内容: 2.23/2.24/2.25 find命令2.26 文件名后缀 2.27 Linux和Windows互传文件 find命令 文件查找: 1.which(一般用 ...

  3. C语言博客作业10

    一.本周教学内容&目标 第4章 循环结构 4.5 综合介绍循环结构的程序设计,涉及到多个典型算法.要求学生能够根据实际情况,选择合适的算法.合理的循环结构,熟练的编写程序. 二.本周作业头 这 ...

  4. PAT甲级满分攻略|记一次考试经历

    一次考试经历 今天是"大雪",很冷. 来到隔壁的学校考试,记得上一次来河中医是两年前大一刚开学吧,那天晚上印象比较深刻,6个室友骑车到处闲逛.当时还不会Hello world. 很 ...

  5. 全新一代云服务器S6,重新定义性价比

    S6通用计算型云服务器,搭载全新一代处理器,配套华为自研高性能智能网卡,计算与网络性能全面升级.S6进一步强化高性价比定位,满足企业性能要求的同时,降低中小企业上云成本. 更多详情请访问ECS产品介绍 ...

  6. 转:Java实现敏感词过滤

    敏感词.文字过滤是一个网站必不可少的功能,如何设计一个好的.高效的过滤算法是非常有必要的.前段时间我一个朋友(马上毕业,接触编程不久)要我帮他看一个文字过滤的东西,它说检索效率非常慢.我把它程序拿过来 ...

  7. Bomb后端云使用

    Bomb是后台云托管工具,在Bomb官网注册会员,即可免费使用后台数据库服务.https://www.bmob.cn/app/list 创建应用后,在设置里获取密钥.根据官方文档集成. 在集成后运行时 ...

  8. Xcode中.a文件引起的错误

    一.     TARGETS -> Build Settings-> Search Paths下 1.  Library Search Paths 删除不存在的路径,保留.a文件的路径(此 ...

  9. 2018 牛客国庆集训派对Day4 - H 树链博弈

    链接:https://ac.nowcoder.com/acm/contest/204/H来源:牛客网 题目描述 给定一棵 n 个点的树,其中 1 号结点是根,每个结点要么是黑色要么是白色 现在小 Bo ...

  10. linux—netstat

    netstat--option -a: 列出所有端口,监听的没有监听的     -t: 显示tcp相关的选项 -u: 显示udp相关的选项 -l: 仅仅显示监听选项 -p:  显示与连接有关的程序名和 ...