一、简介

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. 将String类型转换为int整数类型

    示例如下: public class demo { public static void main(String[] args) { String s="10"; 6 7 //St ...

  2. MATLAB数值计算——0

    目录 MATLAB数值计算 1.solve() 2.fzero() 3.fsolve() MATLAB数值计算 MATLAB中文论坛基础板块常见问题归纳(出处: MATLAB中文论坛) 登录http: ...

  3. 快捷键 导入命名空间shift +alt

  4. [ch04-04] 多样本单特征值计算

    系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力. 4.4 多样本单特征值计算 在前面的代码中,我们一直使用 ...

  5. 暗灰色的圆形按钮.html

    宝宝 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title& ...

  6. asp.net core中间件工作原理

    不少刚学习.net core朋友对中间件的概念一直分不清楚,到底StartUp下的Configure方法是在做什么? public void Configure(IApplicationBuilder ...

  7. 超详细实操教程!在现有K8S集群上安装JenkinsX,极速提升CI/CD体验!

    在2018年年初,Jenkins X首次发布,它由Apache Groovy语言的创建者Jame Strachan创建.Jenkins X 是一个高度集成化的 CI/CD 平台,基于 Jenkins ...

  8. 七种CSS左侧固定,右侧自适应两栏布局

    一 两栏布局基本HTML和CSS 首先创建基本的HTML布局和最基本的样式. 基本的样式是,两个盒子相距20px, 左侧盒子宽120px,右侧盒子宽度自适应 <div class="w ...

  9. git 使用详解(6)—— 3种撤消操作

    接下来,我们会介绍一些基本的撤消操作相关的命令.请注意,有些操作并不总是可以撤消的,所以请务必谨慎小心,一旦失误,就有可能丢失部分工作成果. 修改最后一次提交 git commit --amend 有 ...

  10. CodeForces1006D-Two Strings Swaps

    D. Two Strings Swaps time limit per test 2 seconds memory limit per test 256 megabytes input standar ...