вывод данных ответа api из области видимости

#javascript #reactjs #react-native

#javascript #reactjs #реагировать — родной

Вопрос:

Я использовал асинхронное хранилище в своем приложении React native. итак, я установил данные, установив AsyncStorage.setItem(«@Token», JsonValue). и я создал другую функцию для получения данных, поэтому я не смог вывести свой ответ за рамки обещания

Код:

 storeData = async (value) => {
    try {
      const jsonValue = JSON.stringify(value);
      await AsyncStorage.setItem("@Token", jsonValue);
    } catch (e) {
      // saving error
    }
  };

  getData =   () => {
    const getTodos =  AsyncStorage.getItem("@Token");
getTodos.the((res)=>{

return res;
})
    if(res!==null){

        return true;
    }
else{


    return false
}
   


}
 

Ответ №1:

Значение, возвращаемое из обещания, доступно только из его .then() обратного вызова. Это означает, что res это доступно только внутри getTodos.then((res) => { ... }) .

 storeData = async (value) => {
  try {
    const jsonValue = JSON.stringify(value);
    await AsyncStorage.setItem("@Token", jsonValue);
  } catch (e) {
    // saving error
  }
};

getData = () => {
  const getTodos = AsyncStorage.getItem("@Token");
  getTodos.then((res) => {
    if (res !== null) {
      return true;
    } else {
      return false;
    }
  });
};
 

Ответ №2:

Похоже, вы хотите getData вернуть элемент из хранилища.

Попробуйте что-то вроде этого

 getData = async () => {
  try {
    const value = await AsyncStorage.getItem("@Token");
    if (value !== null) {
      // We have data!!
      console.log(value);
    }
  } catch (error) {
    // Error retrieving data
  }
};
 

Ответ №3:

Попробуйте это:

 getData =   () => {
try {
    const getTodos =  AsyncStorage.getItem("@Token");
    if (getTodos !== null) {
      console.log(getTodos);
    return true;
    }
  } catch (error) {
    // Error retrieving data
   return false;
  }
}
}