Как получить данные из объекта Promise_? - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь получить некоторые данные из объекта Promise_ в приложении React Native в моем AsyncStorage.

Это то, что я получаю вконсоль, в моем объекте Promise_:

Promise {_40: 0, _65: 0, _55: null, _72: null}
  _40: 0
  _55: {imageId: "1", imageName: "test.png"}
  _65: 1
  _72: null
__proto__: Object

Так что я не знаю, как просто получить данные в _55 и показать их в моем коде, я просто хочу взять "1 "и" test.png ".И извините за мой плохой английский.Спасибо!

КОД:

Это код для набора: export const setBadgePicture = async (badgePictureId, badgePictureName) => await AsyncStorage.multiSet([['imageId', badgePictureId],['imageName', badgePictureName]])

и для получения: export const getBadgePicture = async () => { await AsyncStorage.multiGet(['imageId', 'imageName']).then((response) => { tableResponse = { 'imageId' : response[0][1], 'imageName' : response[1][1], } }) return tableResponse }

Ответы [ 4 ]

1 голос
/ 08 апреля 2019

вы можете сделать это, чтобы дождаться, пока ваш AsyncStorage вернет элемент.

 AsyncStorage.getItem('YOUR_KEY').then((response)=>{
      const itemVal = response;
})
0 голосов
/ 08 апреля 2019

Что делать, если вы избегаете multiGet?

export const getBadgePicture = async () => {
  var imageId = await AsyncStorage.getItem('imageId');
  var imageName = await AsyncStorage.getItem('imageName');
  var tableResponse = { 'imageId' : imageId, 'imageName' : imageName };
  return tableResponse;
}
0 голосов
/ 08 апреля 2019

Попробуйте тогда это:

export const getBadgePicture = async () => {
  var response = await AsyncStorage.multiGet(['imageId', 'imageName']);
  var tableResponse = { 'imageId' : response[0][1], 'imageName' : response[1][1], } });
  return tableResponse;
}
0 голосов
/ 08 апреля 2019

AsyncStorage getItem - это асинхронная функция.Это означает, что если вы хотите получить возврат этой функции «get», вам придется ждать ответа.если вы используете функцию AsyncStorage.getItem(), добавьте зарезервированное слово await перед оператором, а в функцию, которую вы вызываете, поместите зарезервированное слово async следующим образом:

async myFunctionWhereImCallingTheGetter () {
  var myData = await AsyncStorage.getItem('theitemIamSearching');
}
...