Сохраните значение DateTime в AsyncStorage, пока изменяется состояние AppState - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь сохранить значение DateTime, когда состояние приложения меняется. Предположим, что приложение находится в фоновом режиме, и я хочу сохранить значение DateTime в AsyncStorage, а когда приложение находится в активном состоянии, я хочу рассчитать разницу во времени. , Но обещание, которое я получаю как возвращаемое значение, является нулевым. Моя версия RN 56.0 кто-нибудь может мне помочь?

StoreDate = async () => {
        await AsyncStorage.setItem('date', new Date());
      };

      retrieveDate = async () => 
      {
        try{
        let value = await AsyncStorage.getItem('date');
        console.log("value",value);
        Alert.alert(value);
        return JSON.parse(value);

    }
          catch(error){
            Alert.alert(error);
          }
      };

     if (this.state.appState.match(/inactive/) && nextAppState === 'background') {
    let getDateTime = this.StoreDate().then((filter) => {
            console.log("filter",filter);
            console.log("getDateTime",getDateTime);
          });
    }

** Возвращается нулевое обещание при попытке получить значения с помощью getItem **

enter image description here

1 Ответ

0 голосов
/ 28 мая 2019

Вы должны сохранить дату в виде строки и изменить ее на дату при получении, например

StoreDate = async () => {
    await AsyncStorage.setItem('date', new Date().getTime());
  };

retrieveDate = async () => {
    try{
        let value = await AsyncStorage.getItem('date');
        console.log("value",value);
        Alert.alert(value);
        return new Date(parseInt(value));
    }
    catch(error){
        Alert.alert(error);
    }
};

if (this.state.appState.match(/inactive/) && nextAppState === 'background') {
    let getDateTime = this.StoreDate().then(() => {
        this.retrieveDate().then(data => {
           console.log('retrieve data ' , data)
        })
      });
}
...