如何检查React Native中的AsyncStorage中是否存在密钥?getItem()始终返回一个promise对象

Mos*_*man 11 javascript react-native asyncstorage react-native-android

我想检查某个键是否可用AsyncStorageAsyncStorage.getItem('key_name').如果密钥不可用,则不返回null,它仍然返回以下promise对象:

Promise
_45:0
_54:null
_65:null
_81:1
Run Code Online (Sandbox Code Playgroud)

我获取数据的功能如下:

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
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Sag*_*tri 12

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
    }
}
Run Code Online (Sandbox Code Playgroud)


zvo*_*ona 6

就像名字所说,它是异步的.所以你必须:

AsyncStorage.getItem('user')
.then((item) => {
     if (item) {
       // do the damage
     }
});
Run Code Online (Sandbox Code Playgroud)

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