首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在React Native中检查AsyncStorage中是否存在键?getItem()总是返回一个promise对象

如何在React Native中检查AsyncStorage中是否存在键?getItem()总是返回一个promise对象
EN

Stack Overflow用户
提问于 2017-05-22 19:57:34
回答 4查看 20.1K关注 0票数 15

我正在尝试使用AsyncStorage.getItem('key_name')检查AsyncStorage中是否有可用的密钥。如果密钥不可用,它不会返回null,它仍然返回以下promise对象:

代码语言:javascript
复制
Promise
_45:0
_54:null
_65:null
_81:1

我获取数据的函数如下:

代码语言:javascript
复制
checkItemExists(){
    let context = this;
    try {
        let value = AsyncStorage.getItem('item_key');
        if (value != null){
            // do something 
        }
        else {
            // do something else
        }
    } catch (error) {
    // Error retrieving data
    }
}

如何检查AsyncStorage中是否存在密钥?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-05-22 20:02:06

您需要在结果中添加async await或添加.then

代码语言:javascript
复制
async checkUserSignedIn(){
    let context = this;
    try {
       let value = await AsyncStorage.getItem('user');
       if (value != null){
          // do something 
       }
       else {
          // do something else
      }
    } catch (error) {
      // Error retrieving data
    }
}
票数 16
EN

Stack Overflow用户

发布于 2017-05-22 20:00:58

正如它的名字所说,它是异步的。所以你必须:

代码语言:javascript
复制
AsyncStorage.getItem('user')
.then((item) => {
     if (item) {
       // do the damage
     }
});

如果需要,您可以使用本地状态或某个应用程序状态管理库。

票数 8
EN

Stack Overflow用户

发布于 2017-05-22 20:00:26

AsyncStorage是异步的.所以,你需要这样叫它:

代码语言:javascript
复制
checkUserSignedIn(callback){
  AsyncStorage.getItem('user', (err, result) => {
    if (!err && result != null){
        // do something 
    }
    else {
        // do something else
    }
    callback(result);
  });
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44112271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档