Как проверить, существует ли ключ в AsyncStorage в React Native? getItem () всегда возвращает объект promise

Я пытаюсь проверить, доступен ли ключ в AsyncStorage С AsyncStorage.getItem('key_name'). Если ключ недоступен, он не возвращает null, он по-прежнему возвращает следующий объект promise:

Promise
_45:0
_54:null
_65:null
_81:1

моя функция для получения данных выглядит следующим образом:

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 или нет?

3 ответов


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
    }
}

Как говорится в названии, это асинхронно. Поэтому вы должны:

AsyncStorage.getItem('user')
.then((item) => {
     if (item) {
       // do the damage
     }
});

при необходимости можно играть либо с локальным состоянием, либо с библиотекой управления состоянием приложения.


AsyncStorage является асинхронным... Итак, вам нужно назвать это так:

checkUserSignedIn(callback){
  AsyncStorage.getItem('user', (err, result) => {
    if (!err && result != null){
        // do something 
    }
    else {
        // do something else
    }
    callback(result);
  });
}