React Native 的 AsyncStorage 有哪些可能的失败案例?

What are the possible failure cases of React Native's AsyncStorage?

React Native 提供 AsyncStorage 库作为在 RN 应用程序中存储持久数据的一种方式。一般来说,AsyncStorage 使用起来非常简单,除了一个方面:

两个主要的 AsyncStorage 函数,AsyncStorage.getItemAsyncStorage.setItem return Promise。这个理解起来很简单:函数实际的查询或保存是在后台运行的,item的获取或保存可能会失败,需要我们catch报错。

但是,似乎 React Native 文档中没有任何地方明确说明了 AsyncStorage 的失败案例是什么,或者在调用 setItem 或 [=18 时应该预期哪些错误=].当然,可以推断出一些错误情况:可能会尝试 getItem 使用不存在的密钥,或者可能会尝试 setItem 在已满或几乎已满的商店中,并且OS 可能会拒绝为您的应用释放更多磁盘 space,但没有完整的列表令人沮丧。

很高兴知道 AsyncStorage 可能会失败,这样开发使用数据持久性的 React Native 应用程序的人可能会确切地知道他们需要处理哪些失败案例。

代码开源,调用失败时可以看到,例如here on android or here for ios.

getItem 调用失败,例如当需要一个不存在的项目时。其他示例可能是 Failed to create storage directory.,您可以在 ios 模块中看到它(例如,当设备上的 space 不足时)。

编辑:

根据 react-native-community/async-storagedocumentationgetItem 在需要不存在的项目时不会失败,它只会 return null.